2010-09-05 11 views
23

Ich versuche, eine Verbindung zu einer API herzustellen und die Json-Ergebnisse mit meiner Rails-App abrufen, aber es scheint nicht zu funktionieren.Ruby Net :: HTTP :: Get und JSON Antworten

Nehmen Sie zum Beispiel:

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

Wenn ich die URL in meinem Browser versuchen, es funktioniert! und ich bekomme JSON-Daten, aber wenn ich das in Ruby versuche, ist der Körper null.

>> 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 

Irgendwelche Gedanken?

Antwort

40

Sie müssen die Anfrage tatsächlich senden und eine Antwort-Objekt abzurufen, wie folgt aus:

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

Grüße!

PS: Bei Verwendung der HTTP-Lib von Ruby gibt this page einige nützliche Beispiele.

+2

Das hat meistens funktioniert, die Methode braucht zwei Argumente und kein Protokoll: 'Net :: HTTP.get_response (" beispiel.com "," /? Search = thing & format = json ")' –

+1

wow, du hast Recht. Entschuldigung dafür (Bearbeitung) –

40

Normalerweise verwende ich open-uri

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

`

Verwandte Themen