Maison > développement back-end > tutoriel php > Pourquoi « SOAP-ERROR : Analyse WSDL : Impossible de charger depuis 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl' » se produit-il sur un serveur Linux lorsque le script fonctionne sur WAMP ?

Pourquoi « SOAP-ERROR : Analyse WSDL : Impossible de charger depuis 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl' » se produit-il sur un serveur Linux lorsque le script fonctionne sur WAMP ?

Susan Sarandon
Libérer: 2024-11-13 12:46:02
original
497 Les gens l'ont consulté

Why does

SOAP-ERROR : analyse WSDL : impossible de charger depuis "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"

Lorsqu'ils tentent d'utiliser un SoapClient sur un serveur maître Linux, les utilisateurs peuvent rencontrer le message d'erreur "SOAP-ERROR : Analyse WSDL : Impossible de charger à partir de 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'." Ce problème survient malgré le bon fonctionnement du script sur un serveur WAMP.

Pour résoudre ce problème, il est recommandé d'explorer les différences potentielles dans les versions PHP entre le serveur et l'environnement WAMP. Les anciennes versions de PHP peuvent ne pas disposer des fonctionnalités nécessaires pour envoyer une chaîne d'agent utilisateur avec les requêtes SoapClient.

Si tel est le cas, spécifier explicitement une chaîne d'agent utilisateur peut résoudre le problème. Ceci peut être réalisé en utilisant un contexte de flux, comme illustré ci-dessous :

try {
    $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);

    $checkVatParameters = array(
        'countryCode' => 'DK',
        'vatNumber' => '47458714'
    );

    $result = $client->checkVat($checkVatParameters);
    print_r($result);
}
catch(Exception $e) {
    echo $e->getMessage();
}
Copier après la connexion

Alternativement, il a été observé que ce problème peut survenir en raison d'une combinaison de HTTP sur IPv6 et de l'absence de chaîne d'agent utilisateur. dans la demande. Le service Web impliqué peut présenter des problèmes dans ces conditions.

Pour confirmer cela, exécutez les commandes suivantes sur l'hôte Linux :

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

Si la requête IPv6 échoue, essayez d'ajouter un agent utilisateur string :

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

Les deux requêtes IPv4 devraient réussir :

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
Copier après la connexion

Si ces observations sont vraies, c'est il est probable que l'hôte Linux résout l'URL en son adresse IPv6 et que la version SoapClient sur le serveur n'ajoute 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!

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