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 が必要ですin /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 行目

WHM/cPanel を使用して利用可能な最新の SOAP バージョンを含めるために、Apache を削除して再コンパイルしました。

私の質問は次のとおりです。正しいエンベロープ名前空間を送信するにはどうすればよいですか?

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 に答える