Home » Web Services » SOAP » Bug #6300
Complex types, SOAP envelop error
Details
| Submitted | 2005-12-20 14:00 UTC |
|---|---|
| From | patrick at studioemma dot be |
| Status | No Feedback |
| Package | SOAP |
| PHP Version | 4.3.3 |
| OS | Redhat |
| Roadmaps | (Not assigned) |
Comments
[2005-12-20 14:00 UTC] patrick at studioemma dot be
Description:
------------
Problem in 0.91, the envelop contains errors when using complex types. Therefore it's not compat with DOT NET.
An envelope created with PEAR_SOAP 0.81 has this structure:
...
<order_producten xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="ns4:clsBestellingProduct[2]" SOAP-ENC:offset="[0]">
<product xsi:type="ns4:clsBestellingProduct">
<order_id xsi:type="xsd:int">23</order_id>
<product_id xsi:type="xsd:int">22</product_id>
<aantal_besteld xsi:type="xsd:int">3</aantal_besteld>
<aantal_gereserveerd xsi:type="xsd:int">0</aantal_gereserveerd>
<aantal_reedsafgehaald xsi:type="xsd:int">0</aantal_reedsafgehaald></product>
<product xsi:type="ns4:clsBestellingProduct">
<order_id xsi:type="xsd:int">23</order_id>
<product_id xsi:type="xsd:int">22</product_id>
<aantal_besteld xsi:type="xsd:int">3</aantal_besteld>
<aantal_gereserveerd xsi:type="xsd:int">0</aantal_gereserveerd>
<aantal_reedsafgehaald xsi:type="xsd:int">0</aantal_reedsafgehaald></product></order_producten></order></ns5:getOrderResponse>
</SOAP-ENV:Body>
Which is perfectly usable and correct, however PEAR_SOAP 0.91 creates a different (erroneous) envelope with the same piece of code (not ns4:product, it's is unrecognizable):
...
<order_producten xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="ns4:clsBestellingProduct[2]" SOAP-ENC:offset="[0]">
<ns4:product>
<value>
<order_id xsi:type="xsd:int">23</order_id>
<product_id xsi:type="xsd:int">22</product_id>
<aantal_besteld xsi:type="xsd:int">3</aantal_besteld>
<aantal_gereserveerd xsi:type="xsd:int">0</aantal_gereserveerd>
<aantal_reedsafgehaald xsi:type="xsd:int">0</aantal_reedsafgehaald></value>
<name xsi:type="xsd:string">product</name>
<type xsi:type="xsd:string">clsBestellingProduct</type>
<namespace xsi:type="xsd:string"></namespace>
<type_namespace xsi:type="xsd:string">http://soapinterop.org/xsd</type_namespace>
<attributes xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:anyType[0]" xsi:nil="true"/>
<arrayType xsi:type="xsd:string"></arrayType>
<options xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:anyType[0]" xsi:nil="true"/>
<nqn>
<name xsi:type="xsd:string">product</name>
<ns xsi:type="xsd:string"></ns>
<namespace xsi:type="xsd:string"></namespace></nqn>
<tqn>
<name xsi:type="xsd:string">clsBestellingProduct</name>
<ns xsi:type="xsd:string"></ns>
<namespace xsi:type="xsd:string">http://soapinterop.org/xsd</namespace></tqn>
<type_prefix xsi:type="xsd:string"></type_prefix></ns4:product>
<ns4:product>
<value>
<order_id xsi:type="xsd:int">23</order_id>
<product_id xsi:type="xsd:int">22</product_id>
<aantal_besteld xsi:type="xsd:int">3</aantal_besteld>
<aantal_gereserveerd xsi:type="xsd:int">0</aantal_gereserveerd>
<aantal_reedsafgehaald xsi:type="xsd:int">0</aantal_reedsafgehaald></value>
<name xsi:type="xsd:string">product</name>
<type xsi:type="xsd:string">clsBestellingProduct</type>
<namespace xsi:type="xsd:string"></namespace>
<type_namespace xsi:type="xsd:string">http://soapinterop.org/xsd</type_namespace>
<attributes xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:anyType[0]" xsi:nil="true"/>
<arrayType xsi:type="xsd:string"></arrayType>
<options xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:anyType[0]" xsi:nil="true"/>
<nqn>
<name xsi:type="xsd:string">product</name>
<ns xsi:type="xsd:string"></ns>
<namespace xsi:type="xsd:string"></namespace></nqn>
<tqn>
<name xsi:type="xsd:string">clsBestellingProduct</name>
<ns xsi:type="xsd:string"></ns>
<namespace xsi:type="xsd:string">http://soapinterop.org/xsd</namespace></tqn>
<type_prefix xsi:type="xsd:string"></type_prefix></ns4:product></order_producten></order></ns5:getOrderResponse>
</SOAP-ENV:Body>