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 ?
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."
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.
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);
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
( échoue)
curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
(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!