向给定的其他系统的接口获取及发送数据
发布时间: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 调用此方法能向提供的接口发送数据,获得返回的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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |