2012-10-11 63 views
4

與此相關的問題:How to request an answer from a SOAP XML API?如何更改使用SOAP請求發送的名稱空間?

我有這個PHP腳本發送帶有必填字段要求:

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

我刪除並重新編譯:我收到以下錯誤消息

$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); 

apache包含使用WHM/cPanel的最新SOAP版本。

我的問題是: 如何發送正確的信封名稱空間?

回答

5

當構建你的soap_client對象時,你可以傳遞一個選項的數組,默認情況下,這個版本將是1.1的PHP文檔。

你的錯誤似乎指出服務可能是SOAP 1.2,所以你需要將它設置爲1.2 ...

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

嘗試了這一點!

+1

謝謝Mathieu爲這個有用的答案,它的工作。我的第一個SOAP請求! :) –