SOAP-erreur: Parsing WSDL: ne pouvait pas charger à partir

en PHP: je reçois une erreur:

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

Mon code est:

<?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();
        }


?>

s'il vous Plaît dites-moi où je fais erreur je suis nouveau dans le WSDL et soap

18
demandé sur jww 2012-06-18 16:28:25

12 réponses

j'ai résolu cela sur ma configuration WAMP en activant le php_openssl extension, puisque L'URL que je chargeais à partir de utilisé https://.

28
répondu adamdport 2013-02-08 14:48:40

j'ai eu ce problème et il m'a fallu des heures pour comprendre. La principale raison de cette erreur est que SoapClient ne peut pas diffuser le fichier de service web à partir de l'hôte. J'ai décommenté cette ligne "extension=php_openssl.dll" dans mon php.fichier ini et ça fonctionne.

6
répondu minhnguyen 2013-08-16 20:05:53

essaye ceci:

$Wsdl = 'http://xxxx.xxx.xx/webservice3.asmx?WSDL';
libxml_disable_entity_loader(false); //adding this worked for me
$Client = new SoapClient($Wsdl);
//Code...
5
répondu Rohit Dhiman 2016-09-06 07:34:42

j'ai eu exactement le même message d'erreur. Dans mon cas, faire une entrée dans mon /etc/hosts fichier (sur le serveur hébergeant le service) pour le serveur cible référencé dans la WSDL corrigé.

sorte d'un message d'erreur étrangement formulé..

4
répondu Lee Henkel 2012-09-23 06:54:22

si vous voulez l'utiliser sur localhost, utilisez WAMP.

puis cliquez sur l'icône tray > services PHP> et activez les opérations suivantes:

  • savon
  • php_openssl
  • openssl
  • curl

p. S. certains hébergements Web gratuits peuvent ne pas avoir ces options

4
répondu T.Todua 2016-02-17 09:58:38

essayez d'ajouter ce morceau de code. Il a travaillé pour moi.

$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;
}
2
répondu jahson kimulu 2015-12-21 19:06:38

j'ai eu la même erreur et je l'ai résolu en recherchant les paramètres soap dans le php.fichier ini et modification savon.wsdl_cache_enabled=1savon.wsdl_cache_enabled=0

2
répondu Jose Daniel 2016-08-25 02:22:10

ajouter l'entrée dns à votre fichier d'hôtes système

par exemple: http://aaa.com/service.asmx?WSDL

vous pouvez obtenir aaa.com ' s adresse ip avec ping

et puis Ajouter au fichier hosts

1
répondu curzduff 2012-12-12 09:05:46

Activer tous ces php.ini fichier de configuration

extension=php_openssl.dll
extension=php_curl.dll
extension=php_xmlrpc.dll
1
répondu vijaymmali 2014-12-17 15:04:16

erreur Similaire. Rendu compte que j'avais une .htpasswd configuration de l'hôte particulier. Sans commentaire de l' .fichier htaccess et a bien fonctionné.

0
répondu rafiki_rafi 2014-07-24 20:06:28

j'ai eu le même message d'erreur

impossible de se connecter à L'API Magento WebService: SOAP-ERROR: Parsing WSDL: ne pouvait pas charger de "example.com/api/soap/?wsdl" : n'a pas réussi à charger entité externe "example.com/api/soap/?wsdl"

et mon problème résolu une fois que J'ai mis à jour L'URL de ma racine de Magento vers

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

Oui, j'ai été absent de l'index.php qui provoque l'erreur.

0
répondu Saiid at RLTSquare 2016-06-16 07:47:39

comme mentionné dans les réponses précédentes, cette erreur peut se produire lors d'une interaction avec un service SOAP sur une connexion HTTPS, et un problème est identifié avec la connexion. Le problème peut être à l'extrémité distante (cert invalide) ou sur le client (en cas de fichiers CA ou PEM manquants). Voir http://php.net/manual/en/context.ssl.php pour tous les paramètres de contexte SSL possibles. Dans mon cas, le fait de tracer le chemin vers mon certificat local a résolu le problème:

$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);
0
répondu user4603841 2016-12-02 16:49:01