У клієнті Savon, що використовує HTTPI, проксі входить до параметрів клієнта. Він діє під час отримання віддаленого WSDL і під час надсилання запиту SOAP.

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

Приклад передбачає транспорт HTTPI. Передайте схвачений URL проксі через середовище. Для публічного тесту SOAP, що допускає неавтентифікованого HTTP-посередника, URL може надати кандидат зі списку HTTP-проксі; рішення щодо автентифікації сервісу й проксі тримайте окремо. Якщо підтримуваний спосіб автентифікації використовує дані в URL, закодуйте зарезервовані символи в цих даних і тримайте отриманий URL поза журналами.

Savon називає їх «глобальними параметрами», але вони локальні для одного екземпляра клієнта. Інший клієнт, створений деінде, не успадковує проксі автоматично.

Перевірте встановлений транспорт, перш ніж повторно використовувати фрагмент. Поточна документація Savon відносить ці параметри до HTTPI; транспорт Faraday має власний інтерфейс налаштування через client.faraday і відхиляє ці параметри, специфічні для HTTPI. Налаштовуйте обраний транспорт, а не змішуйте два інтерфейси.

Тримайте обліковий запис проксі окремо від даних сервісу SOAP і значень WS-Security. Код 407 проксі, HTTP-запит входу сервісу і помилка SOAP позначають різні обміни. Отримання WSDL може не вдатися ще до того, як клієнт виконає хоч одну операцію застосунку.

Схожі статті