ID: 39406 User updated by: mail at martin-probst dot com Reported By: mail at martin-probst dot com Status: Open Bug Type: SOAP related Operating System: MacOS PHP Version: 5.2.0 New Comment:
Btw.: Bug #36547 seems related And: http://de3.php.net/manual/en/ref.soap.php#69173 seems to refer to the same bug, providing a really weird and dirty work-around. Previous Comments: ------------------------------------------------------------------------ [2006-11-06 20:03:36] mail at martin-probst dot com Description: ------------ I'm trying to access a web service using a .wsdl file, literal style. The wsdl defines two schemata with different namespaces where the first one refers to the latter. The message parameter in the SOAP envelope gets the wrong namespace. Reproduce code: --------------- The wsdl contains two schemata: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" xmlns:xi0="http://targetNS" xmlns:xi1="http://otherNS" targetNamespace="http://targetNS"> <xsd:import namespace="http://otherNS"/> <xsd:element name="EmployeeBasicDataByEmployeeQuery" type="xi1:EmployeeBasicDataByEmployeeQueryMessage"/> ... </xsd:schema> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" xmlns:xi0="http://targetNS" xmlns:xi1="http://otherNS" xmlns="http://otherNS" targetNamespace="http://otherNS"> <xsd:complexType name="EmployeeBasicDataByEmployeeQueryMessage"> <xsd:sequence> <xsd:element name="EmployeeBasicDataSelectionByEmployee"> ... </xsd:schema> The calling PHP code: $res = $soap->EmployeeBasicDataByEmployeeQueryResponse_In( array("EmployeeBasicDataSelectionByEmployee" => array("EmployeeID" => 10)))); echo $soap->__getLastRequest() . "\n"; I also tried classmaps and various array combinations. If you add another array level (EmployeeBasicDataByEmployeeQuery) the above gives an error (object hasn't 'EmployeeBasicDataSelectionByEmployee' property). Expected result: ---------------- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/ soap/envelope/" xmlns:ns1="http://targetNS" xmlns:ns2="http://otherNS"> <SOAP-ENV:Body> <ns1:EmployeeBasicDataByEmployeeQuery> <ns2:EmployeeBasicDataSelectionByEmployee> <ns2:EmployeeID>10</ns2:EmployeeID> </ns2:EmployeeBasicDataSelectionByEmployee> </ns1:EmployeeBasicDataByEmployeeQuery> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Actual result: -------------- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/ soap/envelope/" xmlns:ns1="http://my/namespace/somewhere"> <SOAP-ENV:Body> <ns1:EmployeeBasicDataByEmployeeQuery> <EmployeeBasicDataSelectionByEmployee> <EmployeeID>10</EmployeeID> </EmployeeBasicDataSelectionByEmployee> </ns1:EmployeeBasicDataByEmployeeQuery> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39406&edit=1