क्या रूबी से ओपन-यूरी के साथ POST अनुरोध करना संभव है?मैं ओपन-यूरी के साथ POST अनुरोध कैसे करूं?
उत्तर
दुर्भाग्यवश open-uri
केवल GET
क्रिया का समर्थन करता है।
आप या तो एक स्तर छोड़ सकते हैं और net/http
का उपयोग कर सकते हैं, या rest-open-uri
का उपयोग करें, जिसे POST
और अन्य क्रियाओं का समर्थन करने के लिए डिज़ाइन किया गया था। आप इसे स्थापित करने के लिए gem install rest-open-uri
कर सकते हैं।
मैं वास्तव में rest-client की भी सिफारिश करता हूं। एपीआई क्लाइंट लिखने के लिए यह एक अच्छा आधार है।
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
यह मेरे लिए काम किया :)
-1 इस का उपयोग नहीं कर रहा है कनेक्शन को संभालने के लिए ओपनयूआई, यह नेट :: HTTP का उपयोग कर रहा है। इस उदाहरण में, ओपनयूआईआई का उपयोग केवल यूआरआई मॉड्यूल को लोड करने के लिए किया जा रहा है। –
इसके अलावा आपने 'पैराम्स 'घोषित कर दिया है, फिर संदर्भित' क्वेरी' – KomodoDave
इससे कोई फर्क नहीं पड़ता कि इसका उपयोग करना है या नहीं। अगर ओपन-यूरी ऐसा नहीं कर सकता है, तो यह जवाब बहुत से लोगों की मदद करेगा। इस जवाब को कम करने का कोई तरीका नहीं है – mask8
के रूप में सरल रूप में यह हो जाता है:
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
लिंक है: https://github.com/rest-client/rest-client –