Jump to content

SOAP with array wrong result


chamonix

Recommended Posts

Hi,

 

i have a wierd problem with SOAP.

 

My soap response doesn't list my nested array properly

 

This is the WSDL (XML shortened):

----------------8<--------------------

<xsd:complexType name="ShowDispoResult">

<xsd:complexContent>

<xsd:restriction base="soapenc:Array">

<xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ListLanguageDetails[]"/>

</xsd:restriction>

</xsd:complexContent>

</xsd:complexType>

 

<xsd:complexType name="ListLanguageDetails">

<xsd:all>

<xsd:element name="id_lang" type="xsd:int" minOccurs="0"/>

<xsd:element name="lang" type="xsd:string" minOccurs="0"/>

<xsd:element name="places" type="typens:ListPlaces" minOccurs="0"/>

</xsd:all> 

</xsd:complexType>

 

<xsd:complexType name="ListPlaces">

<xsd:complexContent>

<xsd:restriction base="soapenc:Array">

<xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ShowDispoDetails[]"/>

</xsd:restriction>

</xsd:complexContent>

</xsd:complexType>

 

<xsd:complexType name="ShowDispoDetails">

<xsd:all>

<xsd:element name="nom_place" type="xsd:string" minOccurs="0"/>

<xsd:element name="dispo_type" type="xsd:string" minOccurs="0"/>

</xsd:all> 

</xsd:complexType>

----------------8<--------------------

 

This is my array

----------------8<--------------------

Array
(
    [0] => Array
        (
            [id_lang] => 1
            [lang] => Français
            [places] => Array
                (
                    [0] => Array
                        (
                            [nom_place] => Chambre 1 personne
                            [dispo_type] => Prix par nuit à la nuitée
                        )

                    [1] => Array
                        (
                            [nom_place] => Chambre 3 personnes
                            [dispo_type] => Prix par nuit à la nuitée
                        )
                )
        )

    [1] => Array
        (
            [id_lang] => 2
            [lang] => English
            [places] => Array
                (
                    [0] => Array
                        (
                            [nom_place] => Chambre 1 personne
                            [dispo_type] => Prix par nuit à la nuitée
                        )

                    [1] => Array
                        (
                            [nom_place] => Chambre 3 personnes
                            [dispo_type] => Prix par nuit à la nuitée
                        )
                )
        )

    [2] => Array
        (
            [id_lang] => 3
            [lang] => Italiano
            [places] => Array
                (
                    [0] => Array
                        (
                            [nom_place] => Chambre 1 personne
                            [dispo_type] => Prix par nuit à la nuitée
                        )

                    [1] => Array
                        (
                            [nom_place] => Chambre 3 personnes
                            [dispo_type] => Prix par nuit à la nuitée
                        )
                )
        )

)

----------------8<--------------------

 

This is the result I get (XML shortened):

----------------8<--------------------

<ns1:ShowDispoResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

  <rpc:result>return</rpc:result>

<return enc:itemType="ns1:ListLanguageDetails" enc:arraySize="3" xsi:type="ns1:ShowDispoResult">

<item xsi:type="ns1:ListLanguageDetails">

  <id_lang xsi:type="xsd:int">1</id_lang>

  <lang xsi:type="xsd:string">Français</lang>

<places enc:itemType="ns1:ShowDispoDetails" enc:arraySize="2" xsi:type="ns1:ListPlaces">

<item xsi:type="ns1:ShowDispoDetails" enc:id="ref1">

  <nom_place xsi:type="xsd:string">Chambre 1 personne</nom_place>

  <dispo_type xsi:type="xsd:string">Prix par nuit à la nuitée</dispo_type>

  </item>

<item xsi:type="ns1:ShowDispoDetails" enc:id="ref2">

  <nom_place xsi:type="xsd:string">Chambre 3 personnes</nom_place>

  <dispo_type xsi:type="xsd:string">Prix par nuit à la nuitée</dispo_type>

  </item>

  </places>

  </item>

<item xsi:type="ns1:ListLanguageDetails">

  <id_lang xsi:type="xsd:int">2</id_lang>

  <lang xsi:type="xsd:string">English</lang>

<places enc:itemType="ns1:ShowDispoDetails" enc:arraySize="2" xsi:type="ns1:ListPlaces">

  <item enc:ref="#ref1" />

  <item enc:ref="#ref2" />

  </places>

  </item>

<item xsi:type="ns1:ListLanguageDetails">

  <id_lang xsi:type="xsd:int">3</id_lang>

  <lang xsi:type="xsd:string">Italiano</lang>

<places enc:itemType="ns1:ShowDispoDetails" enc:arraySize="2" xsi:type="ns1:ListPlaces">

  <item enc:ref="#ref1" />

  <item enc:ref="#ref2" />

  </places>

  </item>

  </return>

  </ns1:ShowDispoResponse>

----------------8<--------------------

 

It doesn't repeat the "ShowDispoDetails" even if it says arraySize = 2.

 

I'm not sure where the error lays here. Either the WSDL is wrong, w or my array isn't.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.