Maison >développement back-end >tutoriel php >Pourquoi mon SoapClient ne parvient-il pas à analyser WSDL sous Linux mais fonctionne-t-il sous WAMP ?
Sur un serveur maître Linux, le SoapClient est incapable d'analyser le WSDL à partir d'une URL donnée, ce qui entraîne l'erreur : "SOAP-ERROR : Analyse WSDL : Impossible de charger depuis - mais fonctionne sur WAMP". Cependant, appeler l'URL directement ou utiliser curl à partir de la ligne de commande renvoie la réponse XML attendue.
Chaîne d'agent utilisateur manquante :
Pour Dans certaines versions de PHP, SoapClient peut ne pas envoyer d'informations sur l'agent utilisateur HTTP par défaut. Cela peut entraîner des problèmes avec le service Web utilisé.
Solution :
Définir explicitement l'agent utilisateur à l'aide d'un flux contextuel :
$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);
Problèmes de service Web :
De plus, il a été découvert que le service Web en question rencontrait des problèmes avec les requêtes IPv6 sans chaîne d'agent utilisateur. Pour vérifier cela, essayez les commandes suivantes sur l'hôte Linux :
curl -A '' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl curl -A '' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl curl -A 'cURL User Agent' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
La requête IPv6 sans agent utilisateur échouera, tandis que toutes les autres requêtes réussiront. Cela suggère que l'hôte Linux résout le domaine du service Web en son adresse IPv6 et que SoapClient n'ajoutait pas de chaîne d'agent utilisateur par défaut.
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!