postman发送soap协议请求踩过的坑
作者:互联网
协议介绍:webservice soap协议实际就是通过http协议发送post请求,发送的协议内容是xml的文本;
测试工具介绍:所有http接口都可以用postman测试;不过有个测试soap webservice的工具叫soapui;
postman测试方法:
1.需要在header里面设置好接口的方法(a、请求地址无需增加?WSDL b、Headers 增加Content-Type=text/xml;charset=utf-8)
2.用xml文本作为发送参数
3.选择post方法,这个都不用说;
xml文本格式有坑,需要注意:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="XML Schema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetExamFile xmlns="http://tempuri.org/">
<examFileQuery>
<![CDATA[
<ExamFileQuery>
<FillerOrderNO>618648</FillerOrderNO>
<FileType>ExamResult</FileType>
<FileFormat>Pdf</FileFormat>
</ExamFileQuery>
]]>
</examFileQuery>
</GetExamFile>
</soap:Body></soap:Envelope>
1.字母大小写要和服务器定义的完全一致,否则会包反序列化错误;这是我见过很糟糕的接口设计;
2.有两个节点可能是默认的节点,接口文档中一般不会写出来;
3.CDATA后面的两个中括号不能出现空格,否则没有任何返回值
C#操作xml也有几个坑
1.要专门用XmlCDataSection来自动生成[!CDATA["text"]],用字符串直接嵌入[!CDATA[" + text + "]]"不行;直接写入字符串会产生乱码;读取的时候先把这个节点的字符串获取出来(innertext),这个innertext直接就是[!CDATA["text"]]中的文本内容text了,然后再把这个text转换测xml对象,后面的问题跟正常xml一样处理;
2.xml节点之间叠加的时候还需要注意,不是同一个XmlDocument对象产生的节点元素是不能附加在一起的,否则会报错:要插入的节点出自不同的文档上下文;解决方法:乖乖使用同一个XmlDocument对象吧;
3.返回值中xml的版本信息原来也是一个子节点
参考:
Making SOAP requests
标签:xml,http,postman,text,soap,发送,CDATA,节点 来源: https://www.cnblogs.com/net-saiya/p/16314072.html