SOAP yanıt XML içerir

3 Cevap php

Benim WSDL benim reponse böyle olması o kurulum var:

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

Ben yaşıyorum sorun ne yanıt yolluyorum XML değil, bir dize olmasıdır. Bunun sonucu olarak ben yerine HTML kuruluşlar ile yanıt (değil XML SOAP Response (yani ok)) ve XML alıyorum < ve> XML vardır.

Bu ne olsun:

<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>

Ve bu ben almak istiyorum ne:

<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>

Ne eksik?

Teşekkür ederim.

3 Cevap

Hizmet için şema göndermeye çalıştığınız tam olarak XML açıklanır sürece, XML XML bir dize olarak boru geçmesine yapmak için kaçar kullanmak zorunda. &lt;tag&gt; yerine <tag>, vs, vs, vs

Veya, bir XML şeması any parçacık kullanmak şemasını değiştirmek gerekir.

Bu sizin için yeni ise, ben Apache CXF bir dağıtım indirmenizi öneririz. 'Wsdl-ilk' örneklere bakmak ve şema nasıl entegre edildiğini görüyoruz.

Aşağıda perl'de benim için çalıştı

use XML::Entities;

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

$response webservice çağrısı tarafından döndürülen XML olmalıdır.

Neden mesaj bölümüne türünü oldu belirtmek vermedi xsd:string? Bu xsd:any olarak veya şemada tanımlanan belirli bir tip olarak belirlenmiş olmalıdır. Sonra inline içerebilir.

Yapmanız bilgisayarı istedi tam olarak ne görüyoruz.