2012-06-18 16 views
16

からロードできませんでした:私はエラーを取得しています:SOAP-ERROR:解析WSDL:PHPで<URL>

SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://xxx.xxxx.asmx?WSDL' : 
failed to load external entity "http://xxx.xxxx.asmx?WSDL" 

私のコードは次のとおりです。私が作っていますどこ

<?php 
header('Content-Type: text/plain'); 
    if (!class_exists('SoapClient')) 
{ 

     die ("You haven't installed the PHP-Soap module."); 

} 

ini_set('max_execution_time',1); 
     try { 
      $options = array(
       'soap_version'=>SOAP_1_2, 
       'exceptions'=>true, 
       'trace'=>1, 
       'cache_wsdl'=>WSDL_CACHE_NONE 
      ); 
      $client = new SoapClient('http://xxx.xxxx.asmx?WSDL', $options); 
// Note where 'CreateIncident' and 'request' tags are in the XML 
      $results = $client->CreateIncident(
        array(
         'FirstName'=>'gyaan', 
         'LastName'=>'p', 
         'Email'=>'[email protected]', 
         'QueryProductClass'=>'QueryProductClass', 
         'ChannelCode'=>12, 
         'CampaignCode'=>234, 
         'Lob'=>'Lob', 
         'PackageName'=>'SEONI', 
         'PackageCode'=>'SMP', 
         'TravelYear'=>2012, 
         'TravelMonth'=>06, 
         'TravelDay'=>29, 
         'CityOfResidence'=>'Jabalpur', 
         'ncidentNotes'=>'testing ignor this', 
         'MobilePhone'=>'1234567890', 
         'DepartureCity'=>'bangalore', 
         'NoOfDaysTravel'=>'3 Days', 
         'VendorName'=>'TEST HIQ' 
         ) 
        ); 
     } catch (Exception $e) { 
      echo "<h2>Exception Error!</h2>"; 
      echo $e->getMessage(); 
     } 


?> 

は教えてください間違い WSDLとSOAPの新機能

答えて

4

私はまったく同じエラーメッセージがありました。私の場合、WSDLで参照されているターゲットサーバの/etc/hostsファイル(サービスをホストしているサーバ上のファイル)にエントリを作成することで修正されました。

不思議な言葉で表現エラーメッセージの種類..

+0

私は他の誰もあなたのような類似の問題解決策を投稿した理由は分かりませんが、私はこの正確な解決策を見つけるのに多くの時間を費やしています。 –

1

は、システムのホストへのDNSエントリを追加し、たとえば
を提出します。http:?//aaa.com/service.asmx WSDL
あなたが得ることができますpingを
とaaa.comのIPアドレスと、その後のホストに追加

28

ファイル私が使用https://からロードされたURLから、php_openssl拡張を可能にすることによって、私のWAMPの設定でこれを解決しました。

+13

私にとってそれは有効であり、まだ結果はありません! – Abadis

4

これをローカルホストで使用する場合は、WAMPを使用します。

そして、トレイアイコン> PHPサービス>をクリックして、以下が可能に:

  • SOAP
  • php_openssl
  • opensslの
  • カール

p.s.いくつかの無料のWebホスティングにはこれらのオプションがないかもしれません。

+2

何が違うのですか? openssl vs php_openssl –

6

私はこの問題を抱えていました。このエラーの主な理由は、SoapClientがホストからWebサービスファイルをストリーミングできないことです。 php.iniファイルの "extension = php_openssl.dll"という行のコメントを外しても機能します。

0

同様のエラーも発生します。私は特定のホストの.htpasswd設定を持っていました。 .htaccessファイルからコメントを外して正常に動作しました。

1

コードのこの部分を追加してみてください

php.iniの構成ファイルから
extension=php_openssl.dll 
extension=php_curl.dll 
extension=php_xmlrpc.dll 
2

をすべてこれらを有効にします。それは私のために働いた。

$opts = array(
 
    'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false) 
 
); 
 
// SOAP 1.2 client 
 
$params = array ('encoding' => 'UTF-8', 'verifypeer' => false, 'verifyhost' => false, 'soap_version' => SOAP_1_2, 'trace' => 1, 'exceptions' => 1, "connection_timeout" => 180, 'stream_context' => stream_context_create($opts)); 
 
$url = "http://www.webservicex.net/globalweather.asmx?WSDL"; 
 

 
try{ 
 
\t $client = new SoapClient($url,$params); 
 
} 
 
catch(SoapFault $fault) { 
 
\t echo '<br>'.$fault; 
 
}

+0

これらのオプションはHTTPSセキュリティ機能を無効にします...一般的には良い考えではありません。 –

+0

sslコンテキストで暗号オプションを追加すると、同じ問題が解決されました。ありがとうございました! – Kambaa

0

私は

Could not connect to the Magento WebService API: SOAP-ERROR: Parsing WSDL: Couldn't load from 'example.com/api/soap/?wsdl' : failed to load external entity "example.com/api/soap/?wsdl"

同じエラーを持って、私ははい、私はインデックスがありませんでした

example.com/index.php/api/soap/?wsdl

に私のMagentoのルートURLを更新したら、私の問題は解決エラーを引き起こす.php。

2

私は同じエラーを持って、私はそれがphp.iniファイルで石鹸の設定を探しているとを変え解決はに= 1をsoap.wsdl_cache_enabled soap.wsdl_cache_enabled = 0

+0

私は同じエラーが発生し、これは私のために働いた...私はちょうど私の接続とphpのproballyこれにキャッシュされた問題があった。 –

5

はこれを試してみてください。

$Wsdl = 'http://xxxx.xxx.xx/webservice3.asmx?WSDL'; 
libxml_disable_entity_loader(false); //adding this worked for me 
$Client = new SoapClient($Wsdl); 
//Code... 
0

前述のとおり、このエラーはHTTPS接続を介してSOAPサービスとやりとりするときに発生し、接続で問題が識別されます。リモートエンド(無効な証明書)またはクライアント(CAまたはPEMファイルがない場合)に問題がある可能性があります。 可能なすべてのSSLコンテキスト設定については、http://php.net/manual/en/context.ssl.phpを参照してください。 私の場合、ローカル証明書のパスを設定すると、問題が解決しました。

$context = ['ssl' => [ 
    'local_cert' => '/path/to/pem/file', 
]]; 

$params = [ 
    'soap_version' => SOAP_1_2, 
    'trace' => 1, 
    'exceptions' => 1, 
    'connection_timeout' => 180, 
    'stream_context' => stream_context_create($context), 
    'cache_wsdl' => WSDL_CACHE_NONE, // eliminate possible issue from cached wsdl 
]; 

$client = new SoapClient('https://remoteservice/wsdl', $params); 
関連する問題