How to define a SoapVar namespace?
namespaces, php, soap, soap-client
Solution
$CredentialObjectXML = '<CredentialsHeader xmlns="http://www.example.com/Services/Example">
<EMail>'.$UserName.'</EMail>
<Password>'.$Password.'</Password>
</CredentialsHeader>';
$CredentialObject = new SoapVar($CredentialObjectXML,XSD_ANYXML);
This way you can directly use the XML with Type XSD_ANYXML.
Hope this will resolve your problem.
Problem
I need to have this node in my SOAP Request (using 1.1): ``` <CredentialsHeader xmlns="http://www.url.com/Services/P24ListingService11" <EMail>ricky@email.net</EMail> <Password>password</Password> </CredentialsHeader> ``` So I have the following PHP: ``` $client = new SoapClient("https://exdev.www.example.com/Services/example.asmx?WSDL", array( "trace" => 1, "exceptions" => 0, "cache_wsdl" => 0, 'soap_version' => SOAP_1_1 ) ); $CredentialObject = new SoapVar(array('EMail' => 'ricky@email.net', 'Password' => 'password'), SOAP_ENC_OBJECT); ``` Which generates: ``` <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.com/Services/Example"> <SOAP-ENV:Header> <ns1:CredentialsHeader> <EMail>ricky@email.net</EMail> <Password>password</Password> </ns1:CredentialsHeader> </SOAP-ENV:Header> <SOAP-ENV:Body> <ns1:EchoAuthenticated/> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ``` All I need to do is prevent it using `ns1` and actually define the `xmlns` in the node like so: ``` <CredentialsHeader xmlns="http://www.example.com/Services/Example"> <EMail>ricky@email.net</EMail> <Password>password</Password> </CredentialsHeader> ``` I have tested that in Firefox Poster and know for a fact that change fixes the problem.