2010-09-05 31 views
23

Tôi đang cố gắng kết nối với API và truy xuất kết quả json bằng ứng dụng đường ray của tôi, tuy nhiên nó có vẻ không hoạt động.Ruby Net :: HTTP :: Nhận và trả lời JSON

Đưa ví dụ:

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

Khi tôi cố gắng url trong trình duyệt của tôi nó hoạt động! và tôi nhận được dữ liệu JSON, tuy nhiên khi tôi thử nó trong cơ thể của Ruby là không.

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

Bạn nghĩ gì?

Trả lời

40

Bạn cần phải thực sự gửi yêu cầu và lấy một đối tượng phản ứng, như thế này:

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

Trân trọng!

PS: Trong khi sử dụng lib HTTP của Ruby, this page có một số ví dụ hữu ích.

+2

Điều đó làm việc chủ yếu, phương thức lấy hai đối số và không có giao thức: 'Net :: HTTP.get_response (" example.com "," /? Search = thing & format = json ")' –

+1

wow bạn nói đúng. xin lỗi vì điều đó (chỉnh sửa) –

40

Tôi thường sử dụng mở uri

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

'

Các vấn đề liên quan