storozhilov
Новичок
PHP-SOAP: Ошибка при использовании Document-style WSDL
Здравствуйте! Возникла проблема с использованием SOAP-модуля PHP. Почему-то при использовании Document-style WSDL (авторитетные люди именно его рекомендуют к использованию) возникает ошибка приблизительного вида:
При использовании RPC-style WSDL (НЕ рекомендован) все отрабатывает нормально. Сам WSDL, вроде, нормальный, т.к. библиотека gSOAP, с помощью которой реализованы SOAP-сервер и клиентские приложения, "проглатывает" его без проблем, да и на валидаторе прогоняется...
Может кто сталкивался?
Собственно текст программы:
WSDL:
Здравствуйте! Возникла проблема с использованием SOAP-модуля PHP. Почему-то при использовании Document-style WSDL (авторитетные люди именно его рекомендуют к использованию) возникает ошибка приблизительного вида:
Код:
PHP Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] Method
'parameters' not implemented: method name or namespace not recognized in
/usr/home/illy/Programming/SOAP/PHP/document_style_wsdl/web_service_client.php:5
Stack trace:
#0 [internal function]: SoapClient->__call('initUserSession', Array)
#1 /usr/home/illy/Programming/SOAP/PHP/document_style_wsdl/web_service_client.php(5):
SoapClient->initUserSession(1, 'vasya_pupkin', 'password')
#2 {main}
thrown in
/usr/home/illy/Programming/SOAP/PHP/document_style_wsdl/web_service_client.php on line
Может кто сталкивался?
Собственно текст программы:
PHP:
<?php
ini_set('soap.wsdl_cache_enabled', '0');
$client = new SoapClient("web_service.wsdl");
$uuid = $client->initUserSession(1, 'vasya_pupkin', 'password');
?>
Код:
<?xml version="1.0"?>
<wsdl:definitions name="WebService"
targetNamespace="http://soap.webservice.com/soapd/web_service.wsdl"
xmlns:tns="http://soap.webservice.com/soapd/web_service.wsdl"
xmlns:islxsd="http://soap.webservice.com/soapd/web_service.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema targetNamespace="http://soap.webservice.com/soapd/web_service.xsd"
xmlns:tns="http://soap.webservice.com/soapd/web_service.xsd"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
<!-- Common types: -->
<xsd:simpleType name="UUIDDataType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="EntityIDDataType">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="EntityIDRequestDataType">
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:sequence>
<xsd:element name="uuid" type="tns:UUIDDataType" />
<xsd:element name="id" type="tns:EntityIDDataType" />
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!-- Custom types -->
<xsd:complexType name="LoggedErrorsDataType">
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:sequence>
<xsd:element name="id" type="tns:EntityIDDataType" />
<xsd:element name="message" type="xsd:string" />
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ArrayOfLoggedErrorsDataType">
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:sequence>
<xsd:element name="errors" minOccurs="0" maxOccurs="unbounded" nillable="false" type="tns:LoggedErrorsDataType" />
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="InitUserSessionRequestDataType">
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:sequence>
<xsd:element name="loginTypeID" type="tns:EntityIDDataType" />
<xsd:element name="login" type="xsd:string" />
<xsd:element name="password" type="xsd:string" />
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!-- Elements: -->
<xsd:element name="faultResponse" type="tns:ArrayOfLoggedErrorsDataType" />
<xsd:element name="initUserSessionRequest" type="tns:InitUserSessionRequestDataType"/>
<xsd:element name="initUserSessionResponse" type="tns:UUIDDataType"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="faultResponse">
<wsdl:part name="parameters" element="islxsd:faultResponse"/>
</wsdl:message>
<wsdl:message name="initUserSessionRequest">
<wsdl:part name="parameters" element="islxsd:initUserSessionRequest"/>
</wsdl:message>
<wsdl:message name="initUserSessionResponse">
<wsdl:part name="parameters" element="islxsd:initUserSessionResponse"/>
</wsdl:message>
<wsdl:portType name="WebServiceInterface">
<wsdl:operation name="initUserSession">
<wsdl:input message="tns:initUserSessionRequest"/>
<wsdl:output message="tns:initUserSessionResponse"/>
<wsdl:fault message="tns:faultResponse" name="initUserSessionFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WebServiceSoapHttpBinding" type="tns:WebServiceInterface">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="initUserSession">
<soap:operation soapAction="http://soap.webservice.com/soapd"/>
<wsdl:input>
<soap:body use="literal" namespace="http://soap.webservice.com/soapd/web_service.wsdl"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="http://soap.webservice.com/soapd/web_service.wsdl"/>
</wsdl:output>
<wsdl:fault name="initUserSessionFault">
<soap:fault use="literal" namespace="http://soap.webservice.com/soapd/web_service.wsdl"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WebServiceService">
<wsdl:documentation>SOAP-service</wsdl:documentation>
<wsdl:port name="WebServiceEndpoint" binding="tns:WebServiceSoapHttpBinding">
<soap:address location="http://soap.webservice.com:8080/cgi-bin/soapd"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>