在 SOAP 请求中将 XML 数据作为参数传递
Posted
技术标签:
【中文标题】在 SOAP 请求中将 XML 数据作为参数传递【英文标题】:Passing XML Data As Parameter In SOAP Request 【发布时间】:2020-05-15 08:07:39 【问题描述】:我有一个导入 SOAPUI 的 WSDL 配置文件的 URL。我为我想要提出的名为“SubmitAndRate”的请求填写了相关的“表格”。当我发送请求时,我收到 200 响应。但是底部还有一个名为 xmlData 的字段,SOAPUI 说它应该是一个字符串,我相信我应该从我也提供的示例 XML 请求文件中放置数据。
这是当前的请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitAndRate>
<!--Optional:-->
<tem:integrationUser>username</tem:integrationUser>
<!--Optional:-->
<tem:integrationPassword>password</tem:integrationPassword>
<!--Optional:-->
<tem:userName>usernamea</tem:userName>
<!--Optional:-->
<tem:originator>ITC</tem:originator>
<!--Optional:-->
<tem:companyId>1</tem:companyId>
<!--Optional:-->
<tem:stateId>11</tem:stateId>
<!--Optional:-->
<tem:LOBId>1</tem:LOBId>
<!--Optional:-->
<tem:transactionEffectiveDate>2002-05-30T09:30:10.5</tem:transactionEffectiveDate>
<!--Optional:-->
<tem:guaranteedRatePeriodEffectiveDate>2002-05-30T09:30:10.5</tem:guaranteedRatePeriodEffectiveDate>
<!--Optional:-->
<tem:transTypeId>2</tem:transTypeId>
<!--Optional:-->
<tem:isQuote>true</tem:isQuote>
<!--Optional:-->
<tem:persistQuote>true</tem:persistQuote>
<!--Optional:-->
<tem:autoCreateAdditionalInterest>false</tem:autoCreateAdditionalInterest>
<!--Optional:-->
<tem:saveAncillaryChoicePointData>false</tem:saveAncillaryChoicePointData>
<!--Optional:-->
<tem:xmlData></tem:xmlData>
</tem:SubmitAndRate>
</soapenv:Body>
</soapenv:Envelope>
这是我认为应该包含 XML 请求数据的行。说它应该是 SOAPUI 中的字符串。
<tem:xmlData></tem:xmlData>
他们提供给我的 XML 示例请求如下所示:
<ACORD>
<SignonRq>
<SignonPswd>
<CustId>
<CustLoginId>username</CustLoginId>
...
由于我在 php 中对此进行编码,因此我需要一种将 XML 内容作为字符串包含在请求中的方法。我应该这样做吗:
<tem:xmlData>
<![CDATA[
<ACORD>
<SignonRq>
<SignonPswd>
<CustId>
<CustLoginId>username</CustLoginId>
]]>
</tem:xmlData>
当我执行上述操作时,我仍然收到 200 响应,但我似乎没有得到任何以响应方式回击我的东西。我只是得到一个空洞的回应:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<SubmitAndRateResponse xmlns="http://tempuri.org/">
<SubmitAndRateResult/>
</SubmitAndRateResponse>
</s:Body>
</s:Envelope>
而且我没有文档或帮助来确定我的数据是否正确输入。我的请求看起来是否正确,如果正确,我如何测试我的数据是否正确输入?
【问题讨论】:
【参考方案1】:我最近确实有类似的问题,我所做的是将所有 符号更改为实体引用(检查它们的链接如下)
查看此内容以获取更多信息: https://www.w3schools.com/xml/xml_syntax.asp#:~:text=Entity%20References,start%20of%20a%20new%20element.&text=Only%20%3C%20and%20%26%20are%20strictly%20illegal,%3E%20with%20%3E%20as%20well.
【讨论】:
以上是关于在 SOAP 请求中将 XML 数据作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章
在 SOAP UI 请求中将 cookie 作为请求标头发送以获取 REST Web 服务
在 Sql Server 中将 xml 文档作为存储过程的参数传递是不是安全?
如何在 Volley 的 POST 请求中将整数作为参数传递?