16

PHP の場合: エラーが発生します:

SOAP-ERROR: WSDL の解析: 「http://xxx.xxxx.asmx?WSDLから読み込めませんでした」: 外部エンティティ " 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'             => 'aa@gmail.com',
            '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

13 に答える 13

6

私はこの問題を抱えていて、理解するのに何時間もかかりました。このエラーの主な理由は、SoapClient がホストから Web サービス ファイルをストリーミングできないことです。php.ini ファイルでこの行「extension=php_openssl.dll」のコメントを外したところ、動作しました。

于 2013-08-16T20:05:53.127 に答える
6

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

奇妙な言葉遣いのエラーメッセージのようなもの..

于 2012-09-07T20:15:54.220 に答える
5

これを試して:

$Wsdl = 'http://xxxx.xxx.xx/webservice3.asmx?WSDL';
libxml_disable_entity_loader(false); //adding this worked for me
$Client = new SoapClient($Wsdl);
//Code...
于 2016-09-06T07:34:42.170 に答える
4

localhost で使用する場合は、WAMP を使用します。

次に、トレイ アイコン > PHP サービス > をクリックし、以下を有効にします。

  • 石鹸
  • php_openssl
  • openssl
  • カール

PS一部の無料のWebホスティングには、これらのオプションがない場合があります

于 2013-03-26T08:32:58.287 に答える
2

同じエラーが発生し、php.ini ファイルで SOAP 設定を探し、soap.wsdl_cache_enabled=1soap.wsdl_cache_enabled=0に変更して解決しました。

于 2016-08-25T02:22:10.080 に答える
1

システムホストファイルにdnsエントリを追加します
。例:http://aaa.com/service.asmx?WSDL
pingを使用してaaa.comのIPアドレスを取得
し、hostsファイルに追加できます。

于 2012-12-12T08:59:21.767 に答える
1

php.ini構成ファイルからこれらすべてを有効にします

extension=php_openssl.dll
extension=php_curl.dll
extension=php_xmlrpc.dll
于 2014-12-17T14:12:08.963 に答える