在我的WSDL中,我的反应是我设置如下:
<message name='getPartsResponse'>
<part name='Result' type='xsd:string'/>
</message>
我遇到的问题是我在响应中发送的是XML而不是字符串。因此,我使用HTML实体而不是&lt;获取响应的XML(而不是XML SOAP Response(可以))。和&gt; XML有。
这就是我得到的:
<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>
我错过了什么?
谢谢。
答案 0 :(得分:1)
以下在perl中为我工作
use XML::Entities;
$b = XML::Entities::decode('all', $response);
print $b;
$response
应该是webservice调用返回的XML。
答案 1 :(得分:0)
除非服务的架构完全描述了您尝试发送的XML,否则必须使用XML转义来使XML作为字符串传递给管道。 <tag>
代替<tag>
等等,等等。
或者,您需要更改架构以使用XML架构any
粒子。
如果这对您来说是全新的,我建议您下载Apache CXF的发行版。查看'wsdl-first'示例,了解如何集成架构。
答案 2 :(得分:0)
为什么指定邮件部分的类型为xsd:string
?它应该已指定为xsd:any
或作为架构中定义的特定类型。然后你可以把它包括在内。
您正好看到了您要求计算机执行的操作。