SOAP-UI - 如何在参数中传递XML

58

在SOAP-UI中,我正在像这样向Web服务发出请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xxx="http://xxx.call/">
   <soapenv:Header/>
   <soapenv:Body>
      <cotf:call_XXX>
         <!--Optional:-->
         <arg0>
            <!--Optional:-->
            <parameter1>some text</parameter1>
            <!--Optional:-->
            <parameter2>XML string</parameter1>
         </arg0>
      </cotf:call_XXX>
   </soapenv:Body>
</soapenv:Envelope>
我想知道如何在参数2中传递XML字符串,因为如果我直接放置XML字符串,则会将XML字符串节点视为请求参数.... 谢谢。
3个回答

134

要么对所需的 XML 实体进行编码,要么使用 CDATA。

<arg0>
    <!--Optional:-->
    <parameter1>&lt;test>like this&lt;/test></parameter1>
    <!--Optional:-->
    <parameter2><![CDATA[<test>or like this</test>]]></parameter2>
 </arg0>

在第一个例子中,为什么不使用&gt;来编码>?同时编码<>是否可行? - ForguesR
1
@ForguesR 编码 > 仅在某些极端情况下需要。为了安全起见,如果它是内容的一部分,则始终进行编码可能是可以的。过去可能有一些 XML 验证器/解析器无法将 &gt; 识别为有效的 XML 实体,但我可能在胡说八道。https://www.w3.org/TR/1998/REC-xml-19980210 - Alin Purcaru
如果我们使用CDATA方法,接收端是否需要任何特殊设置,或者它能够在没有服务的帮助下正确翻译? - Bpainter
@Bpainter CDATA是XML规范的一部分。如果您有一个不错的XML解析器,那么您就不需要做任何事情。 - Alin Purcaru

1

注意:这只是之前提供的.NET框架3.5及以上版本的替代方案

您可以将其作为原始XML发送

<test>or like this</test>

如果您将paramater2声明为XElement数据类型


有没有想法如何在原始请求中指定(即通过Fiddler或SoapUi或Wizdler)parameter2是XElement数据类型? - drzaus

0

要在请求对象中发送CDATA,请使用SoapObject.setInnerText("...");方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接