2010-09-05 4 views
23

J'essaie de me connecter à une API et de récupérer les résultats de json avec mon application rails, mais cela ne semble pas fonctionner.Ruby Net :: HTTP :: réponses Get et JSON

Prenez par exemple:

@request = Net::HTTP::Get.new "http://example.com/?search=thing&format=json" 

Lorsque je tente l'url dans mon navigateur il fonctionne! et j'obtiens des données JSON, cependant quand j'essaye ça dans Ruby le corps est nul.

>> y @request 
--- !ruby/object:Net::HTTP::Get 
body: 
body_stream: 
header: 
    accept: 
    - "*/*" 
    user-agent: 
    - Ruby 
method: GET 
path: http://example.com/?search=thing&format=json 
request_has_body: false 
response_has_body: true 

Toute pensée?

Répondre

40

Vous devez réellement envoyer la demande et récupérer un objet de réponse, comme ceci:

response = Net::HTTP.get_response("example.com","/?search=thing&format=json") 
puts response.body //this must show the JSON contents 

Cordialement! PS: Lors de l'utilisation de la bibliothèque HTTP de ruby, this page a quelques exemples utiles.

+2

Cela a fonctionné principalement, la méthode prend deux arguments et aucun protocole: 'Net :: HTTP.get_response (" exemple.com "," /? Search = chose & format = json ")' –

+1

wow vous avez raison. désolé pour cela (édition) –

40

J'utilise habituellement ouvert uri

require 'open-uri' 
content = open("http://your_url.com").read 

`