2016-03-15 1 views
0

Je suis en train de créer une fonction avec un filet/http pour ci-dessous boucle commandesComment faire la demande boucle d'en-tête personnalisé avec un filet/http ruby ​​

boucle -H « autorisation: Bearer OAuth2-jeton » https://stage.api.example.com/ssoclient/users/v1/domain_client boucle -H 'content-type: application/JSON' -d @ exemple.JSON OAuth2-url

Je suis capable de créer une fonction en utilisant rest-client comme ci-dessous RestClient.get 'OAuth2-url', {'Authorization' = > 'Bearer OAuth2-auth'}

Je reçois l'objet JSON attendu lorsque j'utilise rest-client, comment puis-je obtenir la même chose avec net/http.

Merci,

Répondre

1
url = URI.parse("https://stage.api.example.com/ssoclient/users/v1/domain_client") 
req = Net::HTTP::Get.new(url.path) 
req.add_field("Authorization", "Bearer OAuth2-auth") 
res = Net::HTTP.new(url.host, url.port).start do |http| 
    http.request(req) 
end 
+0

Merci Amadan pour votre réponse, mais je vois erreur EOF dans res.body. le problème est la réponse montre erreur 401 sur res.inspect. J'ai pu m'authentifier avec la commande curl et la bibliothèque rest-client en utilisant des en-têtes personnalisés mais cela ne fonctionne pas avec net/http – Tommy

+0

http://stackoverflow.com/questions/11269224/ruby-https-post-with-headers ne fonctionne pas pour moi. S'il vous plaît garder ce fil en vie pour d'autres discussions. – Tommy

+0

Mon code ('# add_field') et le code lié (' Get.new') ajouteront correctement un en-tête personnalisé à la demande. Vous pouvez le vérifier en configurant un serveur et en renvoyant les en-têtes (ou simplement en pointant votre code sur une page phpinfo). Si vous avez encore des problèmes, ce n'est pas "comment faire une requête personnalisée d'en-tête avec net/http ruby". – Amadan