Я нахожусь в процессе разработки WSDL для моего SOAP API, и у меня возникла небольшая проблема.
Я начал с одного operation
, и он работал нормально. Но как только я добавил еще operation
, я получаю довольно странную ошибку.
Рассмотрим следующее (сокращенно для краткости):
<message name="doSomethingRequest">
<part name="foo" type="xsd:integer" />
</message>
...
<portType name="myServicePort">
<operation name="doSomething">
<input message="tns:doSomethingRequest" />
<output message="tns:doSomethingResponse" />
</operation>
</portType>
...
<binding name="myServiceBinding" type="tns:myServicePort">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="doSomething">
<soap:operation soapAction="" />
<input>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:mygroup:myservice" use="encoded" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
Я использую этот сервис, используя PHP очень простым способом:
$ws = new SoapClient($wsdl_url);
$result = $ws->doSomething(1);
Теперь проблема заключается в чем-то в WSDL, а не в PHP. Я подтвердил это, изменив <part name="foo" ... />
на <part name="bar" ... />
, и SoapFault затем изменился на Function 'bar' doesn't exist
.
Чего мне не хватает?