Включить XML в ответ SOAP - PullRequest
       10

Включить XML в ответ SOAP

1 голос
/ 25 февраля 2010

В моем WSDL-ответе я настроен так:

<message name='getPartsResponse'>
  <part name='Result' type='xsd:string'/>
</message>

Проблема, с которой я сталкиваюсь, заключается в том, что в ответе я посылаю XML, а не строку. В результате этого я получаю XML ответа (а не XML SOAP Response (это нормально)) с сущностями HTML вместо <и> XML.

Вот что я получаю:

<SOAP-ENV:Body>
<ns1:getPartsResponse>
<Result xsi:type="xsd:string">
&lt ;catalog&gt ;
&lt ;result id="1"&gt ;
&lt ;part&gt ;AAAAAAAAAAA&lt ;/part&gt ;
&lt ;qty>0000000000&lt ;/qty&gt ;
&lt ;mfg&gt ;XXXXXXXXXXXXX&lt ;/mfg&gt ;
&lt ;/result&gt ;
&lt ;result id="2"&gt ;
&lt ;part&gt ;BBBBBBBBBBB&lt ;/part&gt ;
&lt ;qty>11111111111&lt ;/qty&gt ;
&lt ;mfg&gt ;ZZZZZZZZZZZZZ&lt ;/mfg&gt ;
&lt ;/result&gt ;
&lt ;/catalog&gt ;
</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>

Чего мне не хватает?

Спасибо.

Ответы [ 3 ]

1 голос
/ 05 сентября 2013

Ниже работал у меня в Perl

use XML::Entities;

$b = XML::Entities::decode('all', $response);
print $b;

$response должен быть XML, который был возвращен вызовом веб-службы.

0 голосов
/ 28 февраля 2010

Почему вы указали тип части сообщения xsd:string? Он должен быть указан как xsd:any или как определенный тип, определенный в вашей схеме. Тогда вы можете включить его в строку.

Вы видите именно то, что просили сделать компьютер.

0 голосов
/ 28 февраля 2010

Если схема службы не описывает точно XML, который вы пытаетесь отправить, вы должны использовать экранирование XML, чтобы ваш XML проходил через канал в виде строки. &lt;tag&gt; вместо <tag> и т. Д. И т. Д. И т. П.

Или вам нужно изменить схему для использования схемы XML any частиц.

Если это все новое для вас, я рекомендую скачать дистрибутив Apache CXF . Посмотрите на примеры 'wsdl-first' и посмотрите, как интегрируется схема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...