2010-09-05 51 views
23

Estoy tratando de conectarme a una API y recuperar los resultados de json con mi aplicación de rieles, sin embargo, parece que no funciona.Ruby Net :: HTTP :: Get y respuestas de JSON

Tomemos, por ejemplo:

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

Cuando trato de la url en el navegador que funciona! y obtengo datos JSON, sin embargo, cuando intento eso en Ruby, el cuerpo es nulo.

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

¿Alguna idea?

Respuesta

40

Es necesario realidad enviar la solicitud y recuperar un objeto de respuesta, así:

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

Saludos!

PD: Al usar la lib de HTTP de ruby, this page tiene algunos ejemplos útiles.

+2

Eso funcionó principalmente, el método toma dos argumentos y ningún protocolo: 'Net :: HTTP.get_response (" example.com "," /? Search = thing & format = json ")' –

+1

wow tienes razón. perdón por eso (edición) –

40

normalmente utilizo abierta-uri

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

`

Cuestiones relacionadas