Возврат массива массивов через веб-сервис на основе PHP WSDL - PullRequest
1 голос
/ 14 апреля 2009

Я борюсь со следующей проблемой:

У меня есть веб-сервис на основе PHP, который должен использоваться различными клиентов. Пока у меня все просто, все работает отлично. Я подумал, что Axis2 и .NET не нравятся soapenc:array определения в WSDL, поэтому я создал типы списков для отображения массивов объектов:

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

Теперь, если я включу что-то вроде List из CourseLists (используя ту же процедуру WSDL), .NET завершится ошибкой, как Axis2 (ADB) при обработке этих данных. Я проверил XML, который идет по проводам с soapUI; это выглядит разумно.

Я действительно в восторге от этого. Любая подсказка будет высоко оценена.

ТИА

 KB22

1 Ответ

2 голосов
/ 11 января 2011

Этот вопрос старше греха, но на него никогда не отвечали, и я изо всех сил пытался найти ответ, когда недавно столкнулся с той же проблемой. Возможно, есть лучший способ сделать это, но то, что я в конечном итоге сделал, было что-то вроде этого.

На самом деле это даже уровень дальше, трехмерный массив, но общий принцип тот же.

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

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