在 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 文档作为存储过程的参数传递是不是安全?

如何在PHP中传递SOAP标头和Body作为参数

如何在 Volley 的 POST 请求中将整数作为参数传递?

如何使用 AFNetworking 在 http 中将 json 数据作为参数传递

如何使用 Springboot 在 REST 请求 URL 中将 json 对象作为参数传递