Maison > développement back-end > tutoriel php > Pourquoi mon client SOAP fonctionne-t-il sur WAMP mais échoue-t-il avec « SOAP-ERROR : Analyse WSDL : Impossible de charger depuis » sous Linux ?

Pourquoi mon client SOAP fonctionne-t-il sur WAMP mais échoue-t-il avec « SOAP-ERROR : Analyse WSDL : Impossible de charger depuis » sous Linux ?

Susan Sarandon
Libérer: 2024-11-08 18:45:02
original
776 Les gens l'ont consulté

Why Does My SOAP Client Work on WAMP But Fail With

Impossible d'analyser WSDL : "SOAP-ERROR : Analyse WSDL : Impossible de charger depuis - mais fonctionne sur WAMP"

Dans ce scénario, un individu rencontre un problème lors de l'utilisation d'un client SOAP sur un serveur Linux. Bien que le code fonctionne parfaitement sur un serveur WAMP, il échoue avec un message d'erreur indiquant "SOAP-ERROR : Analyse WSDL : Impossible de charger depuis."

Cause

Le problème sous-jacent, comme identifié par un répondant bien informé, réside dans le fait que SoapClient ne transmet pas les informations de l'agent utilisateur HTTP dans des versions PHP spécifiques. Cela entraîne le rejet de la demande par le service Web distant.

Résolution

Pour remédier à la situation, le répondant recommande de définir explicitement l'agent utilisateur dans le code en employant un flux de contexte :

$opts = array(
    'http' => array(
        'user_agent' => 'PHPSoapClient'
    )
);
$context = stream_context_create($opts);

$wsdlUrl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl';
$soapClientOptions = array(
    'stream_context' => $context,
    'cache_wsdl' => WSDL_CACHE_NONE
);

$client = new SoapClient($wsdlUrl, $soapClientOptions);
Copier après la connexion

Informations supplémentaires

Le répondant observe en outre que le service Web concerné présente un comportement particulier. Les requêtes effectuées via IPv6 sans chaîne d'agent utilisateur échouent, tandis que celles effectuées avec IPv4 ou une chaîne d'agent utilisateur réussissent. Cela suggère un problème potentiel avec la configuration du service Web.

Pour vérifier cela, le répondant démontre la différence de comportement lors des requêtes HTTP avec et sans chaîne d'agent utilisateur :

curl  -A ''  -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
Copier après la connexion

( échoue)

curl  -A 'cURL User Agent'  -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
Copier après la connexion

(réussi)

En fin de compte, le problème vient de la combinaison de Requêtes HTTP IPv6, informations inadéquates sur l'agent utilisateur dans SoapClient et failles potentielles dans le service Web lui-même.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal