加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

向给定的其他系统的接口获取及发送数据

发布时间:2020-12-16 23:40:37 所属栏目:安全 来源:网络整理
导读:利用WebService提供接口获取数据或者发送数据的实质: ①双方约定好数据格式及内容,xml、json、html等,通过解析已知格式的文件得到数据; ②必须知道接口的地址,执行的方法名、服务名、端口名; 以下是一段WebService接口代码 import org.apache.log4j.Lo

利用WebService提供接口获取数据或者发送数据的实质:

①双方约定好数据格式及内容,xml、json、html等,通过解析已知格式的文件得到数据;

②必须知道接口的地址,执行的方法名、服务名、端口名;

以下是一段WebService接口代码

import org.apache.log4j.Logger;

private static final Logger _logger = Logger
.getLogger(com.ztesoft.resmaster.remoting.importer.impl.ServiceImporterImpl.class);//这是打印日志信息的类,这样才知道对方返回的数据


调用此方法能向提供的接口发送数据,获得返回的xml格式的数据,上面一般提示成功与失败对应的信息

给的数据格式是:

有些标签是可以没有的,如果是没有数据,所以需要在方法中判断是否加这个标签

<?xml version="1.0"  encoding="GBK"?>
 <SERVICE>
   <IDA_SVR_OPEN>
      <CALL_METHOD>OperArea</CALL_METHOD>
     <INPUT_XMLDATA>
       <LineOrder>
     <AreaID>维护单元ID</AreaID>
         <AreaCode>维护单元编号</BureauCode>
     <AreaName>维护单元名称</AreaName>
     <AnotherName>别名</AnotherName>
     <AreaType>维护单元类型</AreaType>
     <ManageAreaId>管理区域</ManageAreaId>
     <Remark>备注</Remark>
     <EnterOper>录入人员</EnterOper>
     <EnterTime>录入时间</EnterTime>
     <AreaType>维护单元类型</AreaType>
     <ObjectType>维护对象类型</RepairType>
     <ObjectId>维护对象ID</ObjectId>
       </LineOrder>
     </INPUT_XMLDATA>
   </IDA_SVR_OPEN>
  </SERVICE> 
出参格式是:

<SERVICE>
  <ReturnCode>1</ReturnCode>
  <Message>出错信息</Message>
</SERVICE>

0表示成功

public boolean sendAsigService(VOMaintenanceRegion srv) {
	boolean flag = false;
	String inXml = "";
//按照对方给定的格式拼接xml文件
	Document doc = DocumentHelper.createDocument();
    	Element root = doc.addElement("SERVICE");
    	//data节点
    	Element iso = root.addElement("IDA_SVR_OPEN");
    	iso.addElement("CALL_METHOD").addText("OperArea");
    	Element inputXD = iso.addElement("INPUT_XMLDATA");
    	Element lineOrder = inputXD.addElement("LineOrder");
    	lineOrder.addElement("AreaID").addText(srv.getServiceRegionId());
    	lineOrder.addElement("AreaCode").addText(srv.getServiceRegionNo());
    	if(srv.getServiceRegionName() != "" && srv.getServiceRegionName() != null) {
    		lineOrder.addElement("AreaName").addText(srv.getServiceRegionName());
    	}else {
    		lineOrder.addElement("AreaName");
    	}
    	if(srv.getAlias() != "" && srv.getAlias() != null) {
    	} else {
    		lineOrder.addElement("AnotherName");
    	}
    	lineOrder.addElement("AreaType").addText(srv.getServiceRegionType()+"");
    	lineOrder.addElement("ManageAreaId").addText(srv.getRegionId());
    	if(srv.getNotes() != "" && srv.getNotes() != null) {
    		lineOrder.addElement("Remark").addText(srv.getNotes());
    	}
    	lineOrder.addElement("EnterOper").addText(srv.getCreateOp()+"");
    	lineOrder.addElement("EnterTime").addText(srv.getModiryDate()+"");
    	lineOrder.addElement("AreaType").addText(srv.getServiceType()+"");
    	lineOrder.addElement("ObjectType").addText(srv.getSpPositionName());
    	lineOrder.addElement("ObjectId").addText(srv.getSpPositionId());
  
    	inXml=doc.asXML();
		String rtnXml = "";
		String order = "";
		String iomTimeOut = "";
		try {
			String endpoint = pros.getProperty("cdenv.ws.endpoint");
			Service service = new Service();
			Call call = (Call) service.createCall();
			//call.setTargetEndpointAddress(new java.net.URL("http://134.176.111.151:8082/services/AsigService?wsdl"));//这里是写死的地址,就//不要endpoint的获取,上面的配置是在properties文件配置的,再在这个类的Spring容器中配置的prop属性对面的名字获取value
			call.setTargetEndpointAddress(new java.net.URL(endpoint));
			call.setOperationName(new QName("http://main.asig.regaltec.com","executeXML"));
		
			_logger.info(inXml);
			
			try {
				rtnXml = (String) call.invoke(new Object[] { inXml });
				_logger.info(rtnXml);
				if(rtnXml!=null && rtnXml.compareTo("")!=0){
					doc = XMLUtils.parseTxt2XML(rtnXml);
					String rtnCode = doc.selectSingleNode("//SERVICE/ReturnCode").getStringValue();
					
			    	String rtnMessage = doc.selectSingleNode("//SERVICE/Message").getStringValue();
			    	if(rtnCode != null && rtnCode.equals("0")){
		    	    	flag = true;
			    	} else {
			    		flag = false;
			    		throw new RuntimeException("出错信息:"+ rtnMessage);
			    	}
				}
			} catch (Exception e) {
				iomTimeOut = "服保超时";
			}

			try {
				logWrite(inXml,1,order,iomTimeOut);
			} catch (Exception e) {
				e.printStackTrace();
			}

		} catch (Exception e) {
			_logger.error(e.getMessage());
			e.printStackTrace();
		}
		
		return flag;
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读