4

与此问题相关:如何从 SOAP XML API 请求答案?

我有这个 PHP 脚本发送带有必填字段的请求:

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

我收到以下错误消息:

致命错误:未捕获的 SoapFault 异常:[soap:VersionMismatch]

可能的 SOAP 版本不匹配:信封命名空间 http://schemas.xmlsoap.org/soap/envelope/是意外的。

期待http://www.w3.org/2003/05/soap-envelope。在 /home/nosa/public_html/dev/check-domain-availability.php:20 堆栈跟踪:#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} 抛出/home/nosa/public_html/dev/check-domain-availability.php 第 20 行

我删除并重新编译了 apache,以包含使用 WHM/cPanel 可用的最新 SOAP 版本。

我的问题是:如何发送正确的信封命名空间?

4

1 回答 1

5

在构建您的 soap_client 对象时,您可以传递一个选项的数组,默认情况下,根据 php 文档,版本将为 1.1。

您的错误似乎指出该服务可能是 SOAP 1.2,因此您需要将其设置为 1.2 ...

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

试试看!

于 2012-10-11T19:01:58.707 回答