博主工作一周了,上一周里遇到了一个难题,就是对方提供的是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标准__来发展
6.约定的交互格式交互格式
1 | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sen="http://pi.want-want.com/ZRFCARW_1/Sender_Syn"> |
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) |
至此我们完成了数据的代码的填写,相关具体测试我就不多说了,这里我加入了标准的接口返回形式,一边后续的代码可以更加精确地判断问题出在哪里,好了就到这里,谢谢大家的观看。