2010-09-05 13 views
23

मैं एक एपीआई से कनेक्ट करने और अपने रेल ऐप के साथ जेसन परिणाम पुनर्प्राप्त करने का प्रयास कर रहा हूं, हालांकि यह काम नहीं कर रहा है। उदाहरण के लिएरूबी नेट :: HTTP :: प्राप्त करें और JSON प्रतिक्रियाएं

लें:

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

जब मैं अपने ब्राउज़र में यूआरएल की कोशिश यह काम करता है! और मुझे JSON डेटा मिलता है, हालांकि जब मैं रूबी में कोशिश करता हूं तो शरीर शून्य होता है।

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

कोई विचार?

उत्तर

40

का उपयोग आप वास्तव में अनुरोध भेजने और इस तरह एक प्रतिक्रिया वस्तु पुनः प्राप्त करने की आवश्यकता है:

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

सादर!

पीएस: रूबी के HTTP lib का उपयोग करते समय, this page में कुछ उपयोगी उदाहरण हैं।

+2

जो अधिकतर काम करता है, विधि में दो तर्क और कोई प्रोटोकॉल नहीं होता है: 'नेट :: HTTP.get_response ("example.com", "/? Search = thing & format = json") ' –

+1

वाह आप सही हैं। इसके लिए खेद है (संपादन) –

40

मैं आमतौर पर खुले uri

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

`

संबंधित मुद्दे