我想使用postman将xml发布到web服务。 下面是原始体xml。 参数“xml”是我想要传递的字符串值,但是,由于语法错误,请求状态返回400。我怀疑是因为参数值被格式化为xml。
在我的实际应用程序中,一切正常,如果我想使用postman进行测试,我就无法使用它。
如何将此参数作为字符串发送?
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<SaveLead xmlns="http://tempuri.org/">
<xml>
<enquiry><Lead Ref='1234' Source='SourceDesc'><Contact FirstName='TestN' Surname='TestS' Email='testn@test.co.za' Mobile='0830000000' /></Lead></enquiry>
</xml>
</SaveLead>
</soap:Body>
</soap:Envelope>
webservice soap请求的示例
POST /webservice1.asmx HTTP/1.1
Host: xxxxx
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/SaveLead"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SaveLead xmlns="http://tempuri.org/">
<xml>string</xml>
</SaveLead>
</soap:Body>
</soap:Envelope>
答案 0 :(得分:2)
根据Danny上面的评论,使用CDATA部分转义XML字符串解决了这个问题。
定义:CDATA部分可能出现在可能出现字符数据的任何地方;它们用于转义包含字符的文本块,否则这些字符将被识别为标记。 CDATA部分以字符串
开头<![CDATA[ " and end with the string " ]]>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<SaveLead xmlns="http://tempuri.org/">
<xml>
<![CDATA[ <enquiry><Lead Ref='1234' Source='SourceDesc'><Contact FirstName='TestN' Surname='TestS' Email='testn@test.co.za' Mobile='0830000000' /></Lead></enquiry> ]]>
</xml>
</SaveLead>
</soap:Body>
</soap:Envelope>