HTTParty приймає прямий проксі як параметри запиту. Залиште URL сервісу першим аргументом:

response = HTTParty.get(
  'https://api.example/items',
  http_proxyaddr: 'proxy.example',
  http_proxyport: 8080,
  http_proxyuser: ENV.fetch('PROXY_USER'),
  http_proxypass: ENV.fetch('PROXY_PASSWORD'),
  headers: { 'Authorization' => "Bearer #{ENV.fetch('API_TOKEN')}" },
  open_timeout: 5,
  read_timeout: 15
)
puts response.code

Хост і порт проксі позначають посередника. Ім'я користувача й пароль проксі автентифікуються там. Заголовок Authorization належить API, чий обліковий запис може бути зовсім іншим.

Для проксі без автентифікації пропустіть http_proxyuser і http_proxypass. Для публічного запиту до API на дозволеному публічному маршруті візьміть HTTP-адресу зі списку HTTP-проксі, не зберігаючи облікові дані проксі ні в запиті, ні в типових значеннях класу. Поле хоста передається як адреса проксі в Net::HTTP; вкажіть ім'я хоста окремо від порту, а не URL призначення чи URL PAC.

Клас-обгортка, що включає HTTParty, може натомість використати свій метод класу http_proxy, щоб задати типові значення. Параметри запиту перекривають ці типові значення для виклику, що їх передає.

Це описує типовий адаптер з'єднання HTTParty. Власний connection_adapter відповідає за інтерпретацію своїх параметрів, тому перевірте цей адаптер, коли слушне налаштування виглядає проігнорованим. Читайте HTTP-статус окремо від розібраних даних API; успішний розбір JSON не є результатом автентифікації.

Схожі статті