2009-04-14 8 views
1

Je suis aux prises avec le problème suivant:Retour un tableau de tableaux via le service web basé sur PHP WSDL

J'ai un service web basé sur PHP qui doit être consommée par divers clients. Tant que je garde les choses simples, tout fonctionne bien. Je me suis dit que Axis2 et .NET n'aiment pas soapenc:array définitions WSDL, donc je créé les types de liste pour les tableaux d'objets de mappage:

<xsd:complexType name="CourseList"> 
    <xsd:sequence> 
    <xsd:element name="Courses" type="tns:Course" minOccurs="0" maxOccurs="unbounded"/> 
    </xsd:sequence> 
</xsd:complexType> 

Maintenant, si j'inclure quelque chose comme une liste de CourseLists (en utilisant la même procédure WSDL), .NET échoue comme le fait Axis2 (ADB) avec la gestion de ces données. J'ai vérifié le XML qui vient sur le fil avec soapUI; ça a l'air raisonnable.

Je suis vraiment sur les cordes avec celui-ci. Tout indice serait très apprécié.

TIA

KB22 

Répondre

2

Cette question est plus ancienne que le péché, mais il n'a jamais été répondu, et je du mal à trouver une réponse moi-même quand j'ai récemment rencontré le même problème. Il pourrait y avoir une meilleure façon de faire cela, mais ce que j'ai finalement fini par faire était quelque chose comme ça.

Ceci est en fait même un niveau supplémentaire, un tableau de 3-d, mais le principe général est le même.

<xs:element name="myOtherArray"> 
<xs:complexType> 
    <xs:sequence> 
     <xs:element name="someInsideArrayProperty" type="xs:int"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:element name="myArray"> 
<xs:complexType> 
    <xs:sequence> 
     <xs:element name="someArrayProperty" type="xs:string"/> 
     <xs:element name="yetAnotherArray" maxOccurs="unbounded" type="ns:myOtherArray"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:element name="myResponse"> 
<xs:complexType> 
    <xs:sequence> 
     <xs:element name="myResponseArray" maxOccurs="unbounded"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="someProperty" type="xs:int"/> 
        <xs:element name="someOtherProperty" type="xs:string"/> 
        ... 
        <xs:element name="anotherArray" type="ns:myArray" maxOccurs="unbounded"/> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType>