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
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é.
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.
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...
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:
p.s. certains hébergeurs gratuits peuvent ne pas avoir ces options
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é.
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
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;
}
Activer tout cela depuis php.ini fichier de configuration
extension=php_openssl.dll
extension=php_curl.dll
extension=php_xmlrpc.dll
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
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.
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é.
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);