Saltar al contenido

SOAP-ERROR: Analizando WSDL: no se pudo cargar desde, pero funciona en WAMP

Solución:

Para algunas versiones de php, SoapClient no envía información de agente de usuario http. ¿Qué versiones de php tiene en el servidor frente a su WAMP local?

Intente configurar el agente de usuario de forma explícita, utilizando un flujo de contexto de la siguiente manera:

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();
}

Editar

En realidad, parece haber algunos problemas con el servicio web que está utilizando. La combinación de HTTP sobre IPv6 y la cadena de agente de usuario HTTP que falta parece dar problemas al servicio web.

Para verificar esto, intente lo siguiente en su host Linux:

curl  -A ''  -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

esta solicitud de IPv6 falla.

curl  -A 'cURL User Agent'  -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

esta solicitud de IPv6 se realiza correctamente.

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

ambas solicitudes de IPv4 se realizan correctamente.

Caso interesante 🙂 Supongo que su host Linux resuelve ec.europa.eu en su dirección IPv6, y que su versión de SoapClient no agregó una cadena de agente de usuario de forma predeterminada.

Prueba esto. Espero que ayude

$options = [
    'cache_wsdl'     => WSDL_CACHE_NONE,
    'trace'          => 1,
    'stream_context' => stream_context_create(
        [
            'ssl' => [
                'verify_peer'       => false,
                'verify_peer_name'  => false,
                'allow_self_signed' => true
            ]
        ]
    )
];

$client = new SoapClient($url, $options);

Este problema puede deberse a que el cargador de entidades libxml se ha desactivado.

Intenta correr libxml_disable_entity_loader(false); antes de instanciar SoapClient.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *