|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2005-09-27 17:28 UTC] dmitry@php.net
[2005-09-27 23:42 UTC] camka at email dot ee
[2005-09-28 13:46 UTC] sniper@php.net
[2005-09-28 19:42 UTC] camka at email dot ee
[2005-09-28 20:44 UTC] sniper@php.net
[2005-10-03 11:53 UTC] dmitry@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 04:00:01 2025 UTC |
Description: ------------ I want to set default value for the parameter passed to the remote function in wsdl file. When working in non-wsdl mode, the default value on server side is initiated with no problems. But when using wsdl file for client/server initialization, the default value is processed strange way. Reproduce code: --------------- ======= srv.php ========== class fp { public function get_it($opt = 'zzz') { return $opt; } } $srv = new SoapServer('wsdl.wsdl'); $srv->setClass('fp'); $srv->handle(); ======= client.php ========== ... $cl = new SoapClient('wsdl.wsdl', $options); var_dump($cl->__getFunctions()); echo $cl->get_it(); ======== wsdl.wsdl ========== <?xml version='1.0' encoding='UTF-8'?> <definitions name="wsdl" targetNamespace="urn:wsdl" xmlns:typens="urn:wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:wsdl"> <xsd:element name="opt" default="zzz" /> </xsd:schema> </types> <message name="get_it"> <part name="opt" type="typens:opt"/> </message> <message name="get_itResponse"> <part name="return" type="xsd:string"/> </message> <portType name="fpPortType"> <operation name="get_it"> <documentation> Enter description here... </documentation> <input message="typens:get_it"/> <output message="typens:get_itResponse"/> </operation> </portType> <binding name="fpBinding" type="typens:fpPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="get_it"> <soap:operation soapAction="urn:fpAction"/> <input> <soap:body namespace="urn:wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body namespace="urn:wsdl" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="wsdlService"> <port name="fpPort" binding="typens:fpBinding"> <soap:address location="**********/> </port> </service> </definitions> ======== SOAP request ============== <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:get_it> <opt xsi:nil="1"/> </ns1:get_it> </SOAP-ENV:Body> </SOAP-ENV:Envelope> =========== SOAP Response ========= <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:get_itResponse> <return xsi:nil="1"/> </ns1:get_itResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Expected result: ---------------- array(1) { [0]=> string(27) "string get_it(opt $opt)" } zzz Actual result: -------------- array(1) { [0]=> string(27) "string get_it(UNKNOWN $opt)" } NULL