2008-10-28 6 views

उत्तर

29

दुर्भाग्यवश open-uri केवल GET क्रिया का समर्थन करता है।

आप या तो एक स्तर छोड़ सकते हैं और net/http का उपयोग कर सकते हैं, या rest-open-uri का उपयोग करें, जिसे POST और अन्य क्रियाओं का समर्थन करने के लिए डिज़ाइन किया गया था। आप इसे स्थापित करने के लिए gem install rest-open-uri कर सकते हैं।

10

मैं वास्तव में rest-client की भी सिफारिश करता हूं। एपीआई क्लाइंट लिखने के लिए यह एक अच्छा आधार है।

+1

लिंक है: https://github.com/rest-client/rest-client –

12
require 'open-uri' 
require 'net/http' 
params = {'param1' => 'value1', 'param2' => 'value2'} 
url = URI.parse('http://thewebsite.com/thepath') 
resp, data = Net::HTTP.post_form(url, params) 
puts resp.inspect 
puts data.inspect 

यह मेरे लिए काम किया :)

+6

-1 इस का उपयोग नहीं कर रहा है कनेक्शन को संभालने के लिए ओपनयूआई, यह नेट :: HTTP का उपयोग कर रहा है। इस उदाहरण में, ओपनयूआईआई का उपयोग केवल यूआरआई मॉड्यूल को लोड करने के लिए किया जा रहा है। –

+0

इसके अलावा आपने 'पैराम्स 'घोषित कर दिया है, फिर संदर्भित' क्वेरी' – KomodoDave

+0

इससे कोई फर्क नहीं पड़ता कि इसका उपयोग करना है या नहीं। अगर ओपन-यूरी ऐसा नहीं कर सकता है, तो यह जवाब बहुत से लोगों की मदद करेगा। इस जवाब को कम करने का कोई तरीका नहीं है – mask8

1

के रूप में सरल रूप में यह हो जाता है:

require 'open-uri' 
require 'net/http' 

response = Net::HTTP.post_form(URI.parse("https://httpbin.org/post"), { a: 1 }) 

puts response.code 
puts response.message 
puts response.body 

मैं response.methods - Object.methods का उपयोग करना चाहिये सभी उपलब्ध तरीकों, जैसे देखने के लिए message, header,

बोनस: पोस्ट/DELETE अनुरोध:

puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body 
puts Net::HTTP.new("httpbin.org").delete("/delete").body