web-dev-qa-db-fra.com

SOAP-ERROR: Analyse de WSDL: Impossible de charger à partir de <URL>

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'=>'[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();
        }


?>

S'il vous plaît, dites-moi où je me trompe Je suis nouveau dans WSDL et soap 

18
Gyaneshwar Pardhi

J'ai résolu ce problème sur ma configuration WAMP en activant l'extension php_openssl, car l'URL que je chargeais depuis https:// utilisé.

28
adamdport

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 de l'hôte. J'ai annulé la mise en commentaire de cette ligne "extension = php_openssl.dll" dans mon fichier php.ini et cela fonctionne.

6
minhnguyen

Essaye ça:

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

Si vous voulez utiliser cela sur localhost, utilisez WAMP.

Cliquez ensuite sur l'icône de la barre d'état> PHP Services> et activez les éléments suivants:

  • SAVON
  • php_openssl
  • openssl
  • curl

p.s. certains hébergeurs gratuits peuvent ne pas avoir ces options

4
T.Todua

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

Une sorte de message d'erreur étrangement formulé. 

4
Lee Henkel

J'ai la même erreur et je l'ai résolue en cherchant les paramètres soap dans le fichier php.ini et en changeant soap.wsdl_cache_enabled = 1 en soap.wsdl_cache_enabled = 0

2
Jose Daniel

Essayez d'ajouter ce morceau de code. Cela a fonctionné 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
jahson kimulu

Activer tout cela depuis php.ini fichier de configuration

extension=php_openssl.dll
extension=php_curl.dll
extension=php_xmlrpc.dll
1
vijaymmali

ajoutez l'entrée dns au fichier hosts de votre système
par exemple: http: //aaa.com/service.asmx? WSDL
vous pouvez obtenir l'adresse IP de aaa.com avec ping
et ensuite ajouter au fichier hosts 

1
curzduff

J'ai eu la même erreur

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

et mon problème résolu une fois que je mets à jour mon URL racine Magento vers 

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

Oui, il manquait index.php qui cause l'erreur. 

0
saiid

Erreur similaire aussi. J'ai réalisé que j'avais une configuration .htpasswd pour l'hôte particulier. Décommentez-le du fichier .htaccess et a bien fonctionné.

0
rafiki_rafi

Comme indiqué dans les réponses précédentes, cette erreur peut survenir lors de l'interaction avec un service SOAP via une connexion HTTPS et un problème est identifié avec la connexion. Le problème peut se situer à l'extrémité distante (certificat non valide) 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, la définition du chemin d'accès à 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
user4603841