Настройка прокси HTTPI для Savon при запросах WSDL и SOAP
Настройте прокси в клиенте Savon с HTTPI и учтите как получение удалённого WSDL, так и вызовы SOAP.
В клиенте 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 может не удаться ещё до того, как клиент выполнит хоть одну операцию приложения.