什么是soap协议
soap是一种简单的基于XML的协议:HTTP+RPC+XML
soap消息组成
A、Envelope(信封)元素,必选,可把此XML文档标识为一条SOAP消息。
B、Header(报头)元素,可选,包含头部信息(包含了使消息在到达最终目的地之前,能够被路由到一个或多个中间节点的信息)。
C、Body(主体)元素,必选,包含所有的调用和响应信息。
D、Fault元素,位于Body内,可选,提供有关处理此消息所发生错误的信息。
E、Attachment(附件)元素,可选,可通过添加一个或多个附件扩展SOAP消息。
SOAP接口调试工具:SoapUI
-
创建一个新的soap项目
-
填写项目名称以及wsdl接口
-
接口一般会有权限设置,这时需要输入对应的账号和密码或者也可以在request请求中的properties设置相应的账号和密码
-
soapUI根据wsdl解析出来的地址是基于内网,如果对接项目不是内网互通,那么需要把内网地址改成对接公司对应外网地址,这样接口才能ping得通
-
改完后根据业务组装相应数据后点击绿色箭头发送请求,至此接口调试完成
Java对接调用soap接口:
- 相关http工具接口调用:该方式需要自己组装相应soap的xml,组装方式比较复杂(不推荐)
所以这里用postman模拟Java接口调用,请求方式POST:
(1)根据上面接口调试发现wsdl输入账号和密码后会重定向到一个地址,所以复制该地址至postman
(2)构建认证请求头
一般SAP提供的接口都需要账号密码验证,所以第一步根据提供的账号(username)和密码(password)生成认证请求头。将其放置postman请求头以及设置内容为:xml
// 设置-授权信息
HttpHeaders headers = new HttpHeaders();
String basicStr = "Basic " + Base64.encodeBase64String((username + ":" + password).getBytes());
headers.add("Authorization", basicStr);
(3)将参数组装至body,方式为xml,这样就可以调通接口了
该方式对应复杂请求数据组装不友好,如需此方法调用对象组装成xml,可以考虑使用JAXB
-
通过SoapUI软件自动生成接口调用生成代码
(1)在SoapUI软件中点击选中接口,右键 -> Genarate Code -> Axis 1.x Artifacts
(2)输入wsdl地址以及文件夹目录,点击generate生成:
(3)生成完去对应目录,将相应代码拷贝需要对接的项目中:
(4)调用生成的类和方法
Java客户端调用接口代码已经自动生成,但是使用前还有3个地方需要调整
引入axis-1.4的依赖
<dependency>
<groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
在生成的代码中设置账号和密码,如果不是基于内网还需将内网改成相应外网地址
自动生成的Java文件中有一个以Stub结尾的Java文件,找到createCall()这行代码的位置,设置账号和密码和相应的地址(如果自动生成的地址可以ping通这个就不用)的值。
组装data请求参数,调用对应的locator类的getHTTP_Port()方法获取远程调用接口,直接调用接口内的方法即可文章来源:https://www.toymoban.com/news/detail-473623.html
XXXServiceLocator locator = new XXXServiceLocator();
XXX xxx = locator.getHTTP_Port();
ResponseDataItems[] responseDataItems = xxx.XXX(data);
部分思路来源于:JAVA客户端调用SAP提供的接口(保姆级教程)文章来源地址https://www.toymoban.com/news/detail-473623.html
到了这里,关于一文带你了解Java对接soap接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!