Nun cliente Savon que usa HTTPI, o proxy forma parte das opcións do cliente. Aplícase ao obter un WSDL remoto e ao enviar a petición SOAP.

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

O exemplo supón o transporte HTTPI. Subministra un URL de proxy aprobado mediante a contorna. Para unha proba SOAP pública que permita un intermediario HTTP sen autenticar, un candidato da lista de proxies HTTP pode fornecer ese URL; mantén separadas as decisións de autenticación do servizo e do proxy. Se o método de autenticación admitido usa credenciais dentro do URL, codifica os caracteres reservados desas credenciais e mantén o URL resultante fóra dos rexistros.

Savon chámaas «opcións globais», pero son locais a unha instancia de cliente. Outro cliente creado noutro lugar non herda o proxy automaticamente.

Comproba o transporte instalado antes de reutilizar o fragmento. A documentación actual de Savon asigna estas opcións a HTTPI; o seu transporte Faraday ten a súa propia interface de configuración mediante client.faraday e rexeita estas opcións específicas de HTTPI. Configura o transporte elixido en lugar de mesturar as dúas interfaces.

Mantén a conta do proxy separada das credenciais do servizo SOAP e dos valores de WS-Security. O 407 do proxy, o desafío de inicio de sesión HTTP do servizo e un fallo SOAP identifican intercambios distintos. A obtención do WSDL pode fallar antes de que o cliente fixese sequera unha operación de aplicación.

Artigos relacionados