如何使用 Postman 将参数作为 XML 字符串发布

Deo*_*eon 2 xml post postman

我想使用邮递员将 xml 发布到网络服务。下面是原始正文 xml。参数“xml”是我想传递的字符串值,但是由于语法错误,请求状态返回 400。我怀疑这是因为参数值被格式化为 xml。

在我的实际应用程序中一切正常,如果我想使用邮递员进行测试,我就无法让它工作。

如何将此参数作为字符串发送?

<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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

Deo*_*eon 5

根据上面 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>
Run Code Online (Sandbox Code Playgroud)