Я пытаюсь создать веб-сервис с помощью wdsl и soap. Сервер должен быть написан на php.веб-сервис с использованием мыла и wsdl не работает 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)
Благодарности
Это ваш WSDL Почему вы используете 'type' в' part' элемента сообщения Это используется в RPC/Encoding. Вы используете RPC или doc/literal? Если вы используйте doc вместо replace в ' '. Кроме того, префикс tns связывается с пространством targerNamespace? –
Cratylus
привет благодарю за ответ. да это мой WSDL. как я знаю, если это RPC или doc/literal! извините, глупый вопрос, но я имею в виду различные онлайн-уроки и ресурсы для этого. и я попробовал «element» вместо «type» в соответствии с одним учебником, с которым я столкнулся, но он не помог и не вызвал путаницу. Также я не смог найти простую ссылку, объясняющую основы, поэтому хорошая ссылка действительно поможет. спасибо – naiquevin
Если дочерний элемент 'part'' message' имеет атрибут 'type', это означает кодирование RPC, и это также следует упомянуть в разделе привязки. Если дочерний элемент 'part'' message' имеет атрибут 'element', это означает, что он является документом и также упоминается как doc в привязке. Хорошее описание различий здесь (хотя и не последнее, но все же хорошее) http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ – Cratylus