Jeremy Dicaire
Jeremy Dicaire

Reputation: 4905

How to change the namespace sent with a SOAP request?

Related to this question: How to request an answer from a SOAP XML API?

I have this PHP script sending the request with the required fields:

$client = new SoapClient('https://live.domainbox.net/?WSDL');
$params = array(
    'AuthenticationParameters' => array(
        'Reseller' => 'resellername',
        'Username' => 'myusername',
        'Password' => 'mypassword'
    ),
    'CommandParameters' => array(
        'DomainName' => 'mydomain.com',
        'LaunchPhase' => 'GA'
    )
);

$result = $client->CheckDomainAvailability($params);

print_r($result);

I get the following error message:

Fatal error: Uncaught SoapFault exception: [soap:VersionMismatch]

Possible SOAP version mismatch: Envelope namespace http://schemas.xmlsoap.org/soap/envelope/ was unexpected.

Expecting http://www.w3.org/2003/05/soap-envelope. in /home/nosa/public_html/dev/check-domain-availability.php:20 Stack trace: #0 /home/nosa/public_html/dev/check-domain-availability.php(20):

SoapClient->__call('CheckDomainAvai...', Array) #1 /home/nosa/public_html/dev/check-domain-availability.php(20): SoapClient->CheckDomainAvailability(Array) #2 {main} thrown in /home/nosa/public_html/dev/check-domain-availability.php on line 20

I removed and recompiled apache to include the latest SOAP version available using WHM/cPanel.

My question is: How do I send the correct envelope namespace?

Upvotes: 4

Views: 5767

Answers (1)

Mathieu Dumoulin
Mathieu Dumoulin

Reputation: 12244

When building your soap_client object, you can pass an option's array, by default, the version will be 1.1 as per php documentation.

The error you have seems to point out that the service might be SOAP 1.2 so you need to set it to 1.2...

$client = new SoapClient('https://live.domainbox.net/?WSDL', array('soap_version' => SOAP_1_2));

Try that out!

Upvotes: 5

Related Questions