金蝶调用Webservice接口-SOAP
金蝶调用第三方webservice接口以soap方式实现,包括创建服务service、DIspatch、SOAPMessage、QName、封装数据、Dispatch传递消息、消息转换为doc对象、调用结果判断等 在IT行业中,集成不同系统和服务是常见的需求,而金蝶作为一款企业级的ERP软件,有时需要调用第三方的Web服务来实现特定功能。本文主要介绍如何使用SOAP(Simple Object Access Protocol)方式来调用Webservice接口,以金蝶为例进行详细讲解。 了解SOAP。SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它通过HTTP协议传输,具有良好的平台和语言独立性,使得不同系统间的通信变得简单。 1. 创建服务(Service): 在金蝶中调用Web服务的第一步是创建服务对象。这通过`Service.create()`方法完成,传入WSDL(Web Services Description Language)URL和QName( Qualified Name)来定义服务的命名空间和本地名称。例如: ```java String ns = "http://ws.sitech.com"; String wsdlUrl = "http://ip:port/esbWS/services/sResAdd_FH?wsdl"; URL url = new URL(wsdlUrl); QName sname = new QName(ns, "sResAdd_FH"); Service service = Service.create(url, sname); ``` 2. 创建Dispatch: 接下来,创建`Dispatch<SOAPMessage>`对象,它负责发送和接收SOAP消息。这里我们使用`SOAPMessage.class`作为消息类型,并设置模式为`Service.Mode.MESSAGE`,表示我们将处理整个SOAP消息。 ```java Dispatch<SOAPMessage> dispatch = service.createDispatch( new QName(ns, "sResAdd_FHHttpSoap11Endpoint"), SOAPMessage.class, Service.Mode.MESSAGE ); ``` 3. 创建SOAPMessage和封装数据: 然后,创建一个`SOAPMessage`对象,并构建SOAP请求的结构。这包括创建`SOAPEnvelope`、`SOAPBody`,并添加数据到`SOAPBody`中。例如,创建一个QName来指定消息中的数据: ```java SOAPMessage msg = MessageFactory.newInstance().createMessage(); SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope(); SOAPBody body = envelope.getBody(); SOAPBodyElement el = body.addBodyElement(new QName(ns, "callService", "ws")); ``` 接着,将业务数据封装进SOAPBodyElement中,例如: ```java // 封装业务数据... ``` 4. 调用服务并处理响应: 通过`dispatch.invoke(msg)`调用服务,这将返回一个响应的`SOAPMessage`对象。设置响应的字符编码,然后将其转换为DOM(Document Object Model)文档以便进一步处理: ```java SOAPMessage response = dispatch.invoke(msg); response.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "gb2312"); Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument(); ``` 5. 解析响应: 解析响应中的数据。这里使用了`getElementsByTagNameNS()`方法获取特定节点,然后转化为JSONObject,提取所需字段,如: ```java String str = doc.getElementsByTagNameNS(ns, "callServiceResponse").item(0).getTextContent(); JSONObject job = JSONObject.fromObject(str); String RetCode = job.getJSONObject("ROOT").getString("Result"); String RetMessage = job.getJSONObject("ROOT").getString("Message"); ``` 总结,金蝶通过SOAP调用第三方Webservice接口的过程主要包括:创建服务、创建Dispatch、构造SOAP消息、调用服务并处理响应以及解析响应数据。这个过程展示了不同系统间集成的基本步骤,对于理解和实现类似的集成工作具有重要的参考价值。
- qq_253680112019-03-31貌似没啥鸟用,唉
- 蜗牛都玩F12018-07-04虽然没用上 但还是感谢楼主的无私分享!
- 猿心2020-08-04垃圾文件,骗积分还行
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助