博主工作一周了,上一周里遇到了一个难题,就是对方提供的是SOAP协议制作出来的接口,让我们进行适配,其实这个技术已经淘汰了,不过对方是erp也不可能因为你而改写什么对吧,这里我们就分析一下怎么解决这个问题。
SOAP(Simple Object Access Protocol) 简单对象访问协议
SOAP是基于XML的建议协议,可使用应用程序的HTTP之上进行信息交换或简单地说:SOAP使用用于访问网络服务的协议。
- 什么是SOAP?
- SOAP 指简易对象访问协议
- SOAP 是一种通信协议
- SOAP 用于应用程序之间的通信
- SOAP 是一种发送消息的格式
- SOAP 被设计用来通过因特网进行通信
- SOAP 独立于平台
- SOAP 独立于语言
- SOAP 基于XML
- SOAP 很简单并可扩展
- SOAP 允许你绕过防火墙
- SOAP 将被作为W3C标准来发展
2.
6.约定的交互格式交互格式1
2
3
4
5
6
7
8
9<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sen="http://pi.want-want.com/ZRFCARW_1/Sender_Syn">
<soapenv:Header/>
<soapenv:Body>
<sen:MT_ZRFCARW01_Req>
<!--Optional:-->
<IM_OBJID>{json数据}</IM_OBJID>
</sen:MT_ZRFCARW01_Req>
</soapenv:Body>
</soapenv:Envelope>
1 | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sen="http://pi.want-want.com/ZRFCARW_2/Sender_Syn"> |
- 鉴权方式
– BaseAuthor验证方式
解决办法
- 通过对方提供wsdl文档文件,使用soapUI软件进行测试解析
- soapUI工具图:
当我们使用这个工具跑通接口后,这个时候还没有完成我们还必须要使用一个工具就是postman这个接口测试工具,有人可能要问了,为啥用soapui这个工具呢?答案是:交互数据接口,我们需要读取wsdl文件啊,才能知道交互的数据结构呢。
- 使用postman软件进行接口的再次测试。
- 从soapUI中获取相关信息进行解析使用postman进行测试
- 填入交互数据
- 返回的结果图
我们获取到了正式的数据,我们还需要提取xml中的json数据,我得解决方案是通过正则匹配的形式提取json,还有另一种办法,因为数据的格式还是比较简单的,也可以采取替换的原则,去掉json的前后无用的xml标签数据
一下是我写的通信代码
1 | function ApiNetManager($json = null, $isID = true) |
至此我们完成了数据的代码的填写,相关具体测试我就不多说了,这里我加入了标准的接口返回形式,一边后续的代码可以更加精确地判断问题出在哪里,好了就到这里,谢谢大家的观看。