利用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; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。