En un cliente Savon que usa HTTPI, el proxy forma parte de las opciones del cliente. Se aplica al recuperar un WSDL remoto y al enviar la petición SOAP.

client = Savon.client(
  wsdl: 'https://service.example/soap?wsdl',
  proxy: ENV.fetch('SOAP_PROXY_URL'),
  open_timeout: 5,
  read_timeout: 15
)

El ejemplo presupone el transporte HTTPI. Proporciona una URL de proxy aprobada mediante el entorno. Para una prueba SOAP pública que permita un intermediario HTTP sin autenticar, un candidato de la lista de proxies HTTP puede aportar esa URL; mantén separadas las decisiones de autenticación del servicio y del proxy. Si el método de autenticación admitido usa credenciales dentro de la URL, codifica los caracteres reservados de esas credenciales y mantén la URL resultante fuera de los registros.

Savon las llama «opciones globales», pero son locales a una instancia de cliente. Otro cliente creado en otro sitio no hereda el proxy automáticamente.

Comprueba el transporte instalado antes de reutilizar el fragmento. La documentación actual de Savon asigna estas opciones a HTTPI; su transporte Faraday tiene su propia interfaz de configuración mediante client.faraday y rechaza estas opciones específicas de HTTPI. Configura el transporte elegido en lugar de mezclar las dos interfaces.

Mantén la cuenta del proxy separada de las credenciales del servicio SOAP y de los valores de WS-Security. El 407 del proxy, el desafío de inicio de sesión HTTP del servicio y un fallo SOAP identifican intercambios distintos. La obtención del WSDL puede fallar antes de que el cliente haya hecho siquiera una operación de aplicación.

Artículos relacionados