其他分享
首页 > 其他分享> > postman发送soap协议请求踩过的坑

postman发送soap协议请求踩过的坑

作者:互联网

转:C# webservice 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