[英]Include XML in SOAP response
在我的WSDL中,我的响应是这样设置的:
<message name='getPartsResponse'>
<part name='Result' type='xsd:string'/>
</message>
我遇到的问题是我在响应中发送的是XML,而不是字符串。 结果,我得到了带有HTML实体而不是<和> XML的响应的XML(不是XML SOAP Response(可以))。
这是我得到的:
<SOAP-ENV:Body>
<ns1:getPartsResponse>
<Result xsi:type="xsd:string">
< ;catalog> ;
< ;result id="1"> ;
< ;part> ;AAAAAAAAAAA< ;/part> ;
< ;qty>0000000000< ;/qty> ;
< ;mfg> ;XXXXXXXXXXXXX< ;/mfg> ;
< ;/result> ;
< ;result id="2"> ;
< ;part> ;BBBBBBBBBBB< ;/part> ;
< ;qty>11111111111< ;/qty> ;
< ;mfg> ;ZZZZZZZZZZZZZ< ;/mfg> ;
< ;/result> ;
< ;/catalog> ;
</Result>
</ns1:getPartsResponse>
</SOAP-ENV:Body>
这就是我想要得到的:
<SOAP-ENV:Body>
<ns1:getPartsResponse>
<Result xsi:type="xsd:string">
<catalog>
<result id="1">
<part>AAAAAAAAAAA</part>
<qty>0000000000</qty>
<mfg>XXXXXXXXXXXXX</mfg>
</result>
<result id="2">
<part>BBBBBBBBBBB</part>
<qty>11111111111</qty>
<mfg>ZZZZZZZZZZZZZ</mfg>
</result>
</catalog>
</Result>
</ns1:getPartsResponse>
</SOAP-ENV:Body>
我想念什么?
谢谢。
以下在Perl中为我工作
use XML::Entities;
$b = XML::Entities::decode('all', $response);
print $b;
$response
应该是webservice调用返回的XML。
除非该服务的模式准确描述了您要发送的XML,否则必须使用XML转义符使XML作为字符串通过管道。 <tag>
代替<tag>
,等等,等等,等等。
或者,您需要更改架构以使用XML架构的any
粒子。
如果这对您来说是新手,那么我建议下载Apache CXF的发行版。 查看“ wsdl-first”示例,并了解如何集成该模式。
为什么要指定消息部分的类型为xsd:string
? 它应该已指定为xsd:any
或在架构中定义的特定类型。 然后,您可以内联包含它。
您正在准确地看到您要求计算机执行的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.