веб-сервис с использованием мыла и wsdl не работает php - PullRequest
4 голосов
/ 08 января 2011

Я пытаюсь создать веб-сервис, используя 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)

Спасибо

1 Ответ

6 голосов
/ 13 сентября 2011

Я думаю, вам нужно установить xsd: все или xsd: последовательность перед xsd: элемент

...