arhip
Новичок
SOAP: Procedure 'proceName' not present
Всем привет!
У меня стоит php 5.0.2 с поддержкой SOAP (--with-soap).
Создал я wsdl-файлик с двумя методами, в ПХП создал с такими-же 2-мя методами и создал сервер
Проблема в том, что первый метод отрабатывает на УРА, а второй - не работает. Вот SOAP-ответ:
Метод 100% определен. Если оставляю только один метод, то все работает Ок. Комментарий из документации я читал - у меня и так style="rpc". Кто что скажет. Очень нужна помощь.
-~{}~ 11.11.04 12:15:
Вот такой у меня WSDL:
-~{}~ 11.11.04 12:16:
И вот еще что. все методы объявлены как public.
-~{}~ 12.11.04 10:55:
Всем спасибо за помощь - никто так и не отозвался
Вобщем, проблема решилась отключением кэша на сервере ini_set("soap.wsdl_cache_enabled", 0);
Помог решить проблему Дмитрий Стогов, за что ему большое спасибо.
Всем привет!
У меня стоит php 5.0.2 с поддержкой SOAP (--with-soap).
Создал я wsdl-файлик с двумя методами, в ПХП создал с такими-же 2-мя методами и создал сервер
PHP:
$server = new SoapServer("http://dbdev.office.gt.com.ua:8085/arhip/new/dms2.wsdl");
$server->setClass( "Dms" );
$server->handle();
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Procedure 'getPrsByBirthday' not present</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Метод 100% определен. Если оставляю только один метод, то все работает Ок. Комментарий из документации я читал - у меня и так style="rpc". Кто что скажет. Очень нужна помощь.
-~{}~ 11.11.04 12:15:
Вот такой у меня WSDL:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
name="Dms"
targetNamespace="urn:Dms"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="urn:Dms"
xmlns:typens="urn:Dms"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="urn:Dms" xmlns="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="Personnel">
<xsd:all>
<xsd:element name="prs_id" type="xsd:integer"/>
<xsd:element name="prs_name" type="xsd:string"/>
<xsd:element name="prs_surname" type="xsd:string"/>
<xsd:element name="prs_secname" type="xsd:string"/>
<xsd:element name="prs_email" type="xsd:string"/>
<xsd:element name="prs_birthday" type="xsd:date"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="PersonnelArray">
<xsd:complexContent>
<xsd:restriction base="soapenc:Array">
<xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:Personnel[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getPrsByBirthday">
<wsdl:part name="prs_birthday" type="xsd:date"/>
</wsdl:message>
<wsdl:message name="getPrsByBirthdayResponse">
<wsdl:part name="prs_array" type="tns:PersonnelArray"/>
</wsdl:message>
<wsdl:message name="getPrsById">
<wsdl:part name="prs_id" type="xsd:integer"/>
</wsdl:message>
<wsdl:message name="getPrsByIdResponse">
<wsdl:part name="prs_data" type="tns:Personnel"/>
</wsdl:message>
<wsdl:portType name="DmsPort">
<wsdl:operation name="getPrsById">
<wsdl:input message="tns:getPrsById"/>
<wsdl:output message="tns:getPrsByIdResponse"/>
</wsdl:operation>
<wsdl:operation name="getPrsByBirthday">
<wsdl:input message="tns:getPrsByBirthday"/>
<wsdl:output message="tns:getPrsByBirthdayResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="DmsBinding" type="tns:DmsPort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getPrsById">
<soap:operation soapAction="urn:Dms:DmsPrst#getPrsById"/>
<wsdl:input>
<soap:body parts="prs_id" use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:Dms/binding"
parts="prs_data"
use="encoded"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getPrsByBirthday">
<soap:operation soapAction="urn:Dms:DmsPrst#getPrsByBirthday"/>
<wsdl:input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:Dms/binding"
parts="prs_birthday"
use="encoded"/>
</wsdl:input>
<wsdl:output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:Dms/binding"
parts="prs_array"
use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="DmsPrs">
<wsdl:port binding="tns:DmsBinding" name="DmsPort">
<soap:address location="http://dbdev.office.gt.com.ua:8085/arhip/new/dms2.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
И вот еще что. все методы объявлены как public.
-~{}~ 12.11.04 10:55:
Всем спасибо за помощь - никто так и не отозвался
Вобщем, проблема решилась отключением кэша на сервере ini_set("soap.wsdl_cache_enabled", 0);
Помог решить проблему Дмитрий Стогов, за что ему большое спасибо.