La carga de un WSDL remoto puede ocurrir dentro del constructor de SoapClient. Proporcione el proxy antes de esa primera recuperación:

$client = new SoapClient('https://service.example.com/api?wsdl', [
    'proxy_host' => '203.0.113.10',
    'proxy_port' => 8080,
    'proxy_login' => getenv('PROXY_USER'),
    'proxy_password' => getenv('PROXY_PASSWORD'),
    'connection_timeout' => 5,
    'exceptions' => true,
]);

Use el WSDL real, el host/puerto del proxy y la fuente de credenciales prevista. El campo de host es una dirección, con su puerto aparte.

Cuando fallaSolicitud u operación que inspeccionar
Construcción del clienteRecuperación del WSDL o procesamiento del documento.
Procesamiento de documento/esquema importadoLa URL adicional real de recuperación.
Una llamada a un método SOAPEl punto de conexión del servicio declarado en el WSDL, posiblemente en otro host.

Un proceso que usa WSDL en caché puede omitir la solicitud que falla en otra máquina. Conserve la configuración de la caché y la URL real que falló junto con la comparación, en lugar de cambiar el proxy solo por el éxito de la construcción.

proxy_login/proxy_password autentican el intermediario. Las login/password de destino y la autenticación del servicio a nivel de SOAP sirven a otras capas. Use las opciones dedicadas en lugar de poner cabeceras similares a cuentas en el User-Agent; las cabeceras de aplicación necesarias pertenecen a una interfaz de cabeceras admitida.

Registre la operación, el destino y la parte que emite un desafío con los secretos eliminados. connection_timeout limita el establecimiento de la conexión, no la duración completa de una operación SOAP larga.

Artículos relacionados