2

認証で保護されたASP.Net Webサービスを使用するPHPクライアントソープをコーディングしようとしています。私のphpコードは次のとおりです。

<?php
ini_set("soap.wsdl_cache_enabled", "0");  
try {
    $client = new SoapClient("https://www.webservicexxx.com:60443/service.asmx?WSDL", array('location' => 'https://webservicexxxcom:60443/service.asmx',
          'login' => "myLogin", 'password' => "myPAssword")); 
} catch (SoapFault $e) {
    echo $e;
}?>

次のエラー メッセージが表示されます。

 SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://www.webservicexxx.com:60443/service.asmx?WSDL' : failed to load external entity "https://www.webservicexx.com:60443/service.asmx?WSDL" in /var/www/webservice2/soap-client.php:5 Stack trace: #0 /var/www/webservice2/soap-client.php(5): SoapClient->SoapClient('https://www.web...', Array) #1 {main}

ubuntuサーバーのphp.iniでこの拡張機能を有効に設定したことを知っています:

extension = php_openssl.dll
extension = php_soap.dll
extension = php_curl.dll

そして、認証を使用して同じサーバー上の別のphp Webサービスを解析しようとすると、機能します:

try { 
    $client = new SoapClient("https://xx.xx.xx.xx:443/webservice1/notificationManager.wsdl", array('location' => 'http://xx.xx.xx.xx./webservice1/soap-server.php',
          'login' => "myLogin", 'password' => "myPass")); 
} catch (SoapFault $exception) { 
    echo $exception;       
} 

最初の Web サービスから応答がないのはなぜですか?

4

2 に答える 2

0

最初の Web サービスから応答がないのはなぜですか?

外部エンティティの読み込みに失敗したため

https://www.webservicexx.com:60443/service.asmx?WSDL

PHP が WSDL にアクセス可能で到達可能であることを確認してくださいSoapClient

編集:あなたのコメントによると、WSDL URL には HTTP 認証が必要です。PHPSoapClientは、この種の認証を SOAP エンドポイントでのみサポートしていますが、WSDL http 要求ではサポートしていません。これが、失敗したというエラーが表示される理由です。これは次のことに関連しています。

解決策は、独自の WSDL ファイルを要求し、SoapClient がそのコピーを指すようにすることです。詳細については、リンクされた質問を参照してください。

于 2012-11-02T13:08:42.047 に答える