SOAP-ERROR: синтаксический анализ WSDL: не удалось загрузить с <URL>

В PHP: я получаю ошибку:

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 и мыле

Ответы на вопрос(12)

Подобная ошибка также. Понял, что у меня была установка .htpasswd для конкретного хоста. Раскомментировал его из файла .htaccess и работал нормально.

Я получил ту же ошибку и решил ее, посмотрев настройки мыла в файле php.ini и изменивsoap.wsdl_cache_enabled=1 вsoap.wsdl_cache_enabled=0

 15 сент. 2016 г., 22:09
Я получил ту же ошибку, и это сработало для меня ... У меня просто были проблемы с подключением, и php, вероятно, был кеширован.

добавьте запись dns в системный файл hosts
например & # xFF1A; http: //aaa.com/service.asmx? WSDL
вы можете получить IP-адрес aaa.com с помощью ping
а затем добавить в файл hosts

Если вы хотите использовать это на локальном хосте, используйте WAMP.

Затем нажмите на иконку в трее & gt; Службы PHP & gt; и там включить следующие:

SOAP php_openssl openssl curl

постскриптум некоторые бесплатные веб-хостинг может не иметь этих опций

 16 мая 2016 г., 18:36
чем отличается? openssl против php_openssl

Попробуй это:

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

Попробуйте добавить этот кусок кода. Это сработало для меня.

$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{
	$client = new SoapClient($url,$params );
}
catch(SoapFault $fault) {
	echo '<br>'.$fault;
}

 01 апр. 2017 г., 16:27
добавление опции шифрования в контексте ssl решило ту же проблему для меня. Спасибо!
 04 авг. 2016 г., 16:38
Эти параметры отключают функции безопасности HTTPS ... как правило, не очень хорошая идея.

Как упоминалось в предыдущих ответах, эта ошибка может возникать при взаимодействии со службой SOAP через HTTPS-соединение, и проблема связана с этим соединением. Проблема может быть на удаленном конце (недействительный сертификат) или на клиенте (в случае отсутствия файлов CA или PEM). Увидетьhttp://php.net/manual/en/context.ssl.php для всех возможных настроек контекста SSL. В моем случае установка пути к моему локальному сертификату решила проблему:

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

У меня было точно такое же сообщение об ошибке. В моем случае сделать запись в моем/etc/hosts файл (на сервере, на котором размещена служба) для целевого сервера, указанного в WSDL, исправил его.

Вид странно сформулированного сообщения об ошибке ..

 10 нояб. 2015 г., 21:28
Спасибо, человек за этот ответ. Я понятия не имею, почему никто другой не опубликовал подобное решение проблемы, как Вы, но я потратил много часов на то, чтобы найти это точное решение, и, вероятно, Вы сэкономили мне пару лишних часов на исследования.

У меня была эта проблема, и мне потребовались часы, чтобы понять. Основная причина этой ошибки - SoapClient не может передавать файл веб-службы с хоста. Я раскомментировал эту строку & quot; extension = php_openssl.dll & quot; в моем файле php.ini, и это работает.

Я получил ту же ошибку

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"

и моя проблема была решена, как только я обновил свой URL-адрес Magento Root до

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

Да, мне не хватало index.php, который вызывает ошибку.

Я решил это на настройке WAMP, включивphp_openssl расширение, так как URL, который я загружал с бhttps://.

 08 янв. 2015 г., 16:13
Для меня это включено и до сих пор нет результата !!!

Включить все это изphp.ini конфигурационный файл

extension=php_openssl.dll
extension=php_curl.dll
extension=php_xmlrpc.dll

Ваш ответ на вопрос