Ruby Net::HTTP:: obtenir et réponses JSON

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

Prenez par exemple:

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

Lorsque j'essaie l'url dans mon navigateur, cela fonctionne! et je reçois des données JSON, mais quand j'essaie cela 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

Des idées?

24
demandé sur JP Silvashy 2010-09-05 22:27:07

2 réponses

Vous devez réellement envoyer la demande et de 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 lib HTTP de ruby, cette page a quelques exemples utiles.

40
répondu Pablo Fernandez 2010-09-05 22:52:24

J'utilise généralement open-uri

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

`

42
répondu jordinl 2010-09-05 18:31:52