HTTParty accepte le proxy mandataire comme options de requête. Gardez l'URL du service comme premier argument :

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

L'hôte et le port du proxy désignent l'intermédiaire. Le nom d'utilisateur et le mot de passe du proxy s'authentifient là-bas. L'en-tête Authorization appartient à l'API, dont le compte peut être totalement différent.

Pour un proxy sans authentification, omettez http_proxyuser et http_proxypass. Pour une requête d'API publique sur une route publique autorisée, prenez une adresse HTTP dans la liste de proxies HTTP sans conserver d'identifiants de proxy ni dans la requête ni dans les valeurs par défaut de la classe. Le champ hôte est transmis comme adresse de proxy à Net::HTTP ; indiquez le nom d'hôte séparément de son port, et non une URL de destination ou une URL PAC.

Une classe enveloppante qui inclut HTTParty peut plutôt utiliser sa méthode de classe http_proxy pour définir des valeurs par défaut. Les options de requête remplacent ces valeurs pour l'appel qui les fournit.

Ceci décrit l'adaptateur de connexion par défaut de HTTParty. Un connection_adapter personnalisé est chargé d'interpréter ses options ; inspectez donc cet adaptateur lorsqu'un réglage valide semble ignoré. Lisez le statut HTTP séparément des données d'API analysées ; une analyse JSON réussie n'est pas un résultat d'authentification.

Articles similaires