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
.