Я пытаюсь создать веб-сервис, используя wdsl и мыло.Сервер должен быть написан на php.
На данный момент я пытаюсь что-то добавить, добавив только одну функцию к объекту мыльного сервера.Мое требование состоит в том, чтобы эта функция принимала ассоциативный массив.Прямо сейчас он возвращает строку, но пока только пробную версию, а также будет возвращать массив в соответствии с требованием.
Для принятия в качестве входного значения связанного массива я определил complexType в wsdl.Ниже приведен код
<types>
<xsd:schema
targetNamespace="http://projects.kp/test/webservice/StoreService.wsdl"
xmlns="http://www.w3.org/1999/XMLSchema/">
<xsd:complexType name="store">
<xsd:element name="name" type="xsd:string" />
<xsd:element name="subdomain" type="xsd:string" />
</xsd:complexType>
</xsd:schema>
</types>
<message name="StoreRequest">
<part name="store" type="tns:store"/>
</message>
<message name="StoreResponse">
<part name="url" type="xsd:string"/>
</message>
Когда я запускаю файл мыльного клиента в браузере, он выдает следующую ошибку:
Fatal error: Uncaught SoapFault exception:
[WSDL] SOAP-ERROR: Parsing Schema: unexpected in complexType
Если я использую строковый тип данных вместо complexType,это работает правильно.Я думаю, я еще не понял, как работают complexTypes, поэтому я не могу отладить это.
Также я хотел бы знать, будет ли работать массив как запрос и тип ответа, если клиент кодируется на другом языке, скажем .NET.
(Сейчас я тестирую это навиртуальный хост на рабочем столе Ubuntu и сервер и клиент находятся на одном виртуальном хосте и оба написаны на php)
Спасибо