昨天 遇到一个难题,我接到一个webservice API 接口进行批量出单任务,造数据 方便测试report.
XML 内容如下 :
<soapenv:Envelope xmlns:soapenv="http://p/elope/"
xmlns:ser="http://service.segst.com/">
<soapenv:Header/>
<soapenv:Body>
<ser:SendPolicy>
<username>Srikrung</username>
可以看出信息符合 soap 协议的wsdl文件 :
SOAP 构建模块
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
可选的 Header 元素,包含头部信息
必需的 Body 元素,包含所有的调用和响应信息
我的思路是 WSDL 文件,既然你是个XML文件是可以 封装在http body里进行post,
- 保存在一个XML 文件里,然后用 read() 函数进行读取:
with open(filepath,‘rw‘’) as f:
a=f.read()
2.读取之后 我直接放在body 里进行post, 很不幸直接报错, 我再去 查看XML 文件,结果报解析异常
如图:
无论如何怎么调都没有用. 问题出现了还得去解决呀, 我去百度搜索 解决方法,一直找不到,
- 干脆就不找了, 我用postman 去post, 结果大吃一惊,果然 运行成功, 同样都是XML postman居然成功了
这个问题一直困扰了我,如果哪位大仙知道为什么,麻烦告诉我.
xml格式:
- 运行成功了我就好办了, 我直接 点击code 转化为 python requests , 这个功能小伙伴一定要学会,接口必备呀.
我们再用转化后的格式 发post ,就可以成功了 .
转化为的格式为 :
payload = "<soapenv:Envelope xmlns:soapenv=\"http://schmas.xmlpe/\" \n xmlns:ser=\"http://servi.com/\">\n <soapenv:Header/>\n <soapenv:Body>\n <ser:SendPolicy>\n <username>***</username>\n \n <CusPostCode>10200</CusPostCode>\n "
完美解决了问题, 下一章我总结下, wsdl ,soap, http ,xml 直接的联系,把知识点串联起来.