2012-02-15 6 views
8

में अनुरोध में शीर्षलेख जोड़ें मैं HTTP पोस्ट बनाने के लिए रेल 3.2.1 का उपयोग कर रहा हूं।रेल में

मुझे हेडर के लिए X-FORWARDED जोड़ने की आवश्यकता है। मैं रेल में ऐसा कैसे करूं?

कोड:

post_data = { 
    "username" => tabuser 
} 

response = Net::HTTP.post_form(URI.parse("http://<my php file>"), post_data) 

धन्यवाद

+0

ये नेट :: http उदाहरण उपयोगी हो सकते हैं? https://github.com/augustl/net-http-cheat-sheet/blob/master/headers.rb – house9

+0

धन्यवाद! यदि आप इसे उत्तर के रूप में रखना चाहते हैं तो मैं इसे स्वीकार करूंगा –

+0

उत्तर के रूप में टिप्पणी को जोड़ा - चीयर्स! – house9

उत्तर

9

ये शुद्ध :: http उदाहरण उपयोगी हो सकता है?

https://github.com/augustl/net-http-cheat-sheet/blob/master/headers.rb

+1

बहुत उपयोगी। धन्यवाद। – BlackHatSamurai

+0

लिंक-केवल उत्तर ही निराश हैं। आप जवाब के शरीर के भीतर हेडर जोड़ने के तरीके पर वास्तविक कोड प्राप्त करना चाहते हैं। –

+0

@AndrewGrimm - मेरा उत्तर 5 साल पहले से है। हालांकि सही नहीं है यह वही है। – house9

7

मैं इस अधिक पठनीय लगता है

require "net/http" 
require "uri" 

url = URI.parse("http://www.whatismyip.com/automation/n09230945.asp") 

req = Net::HTTP::Get.new(url.path) 
req.add_field("X-Forwarded-For", "0.0.0.0") 
req.add_field("Accept", "*/*") 

res = Net::HTTP.new(url.host, url.port).start do |http| 
    http.request(req) 
end 

puts res.body 

http://www.dzone.com/snippets/send-custom-headers-rub

हालांकि से चोरी हो !!

अगर आप भेजने के लिए 'स्वीकार' रेल आवेदन करने के लिए शीर्ष लेख (Accept: application/json) चाहते हैं, आप नहीं कर सकते:

req.add_field("Accept", "application/json")

लेकिन कार्य करें:

req['Accept'] = 'application/json'

इस का कारण यह है कि जब यह ", /" या "/," होता है और HTML (जो add_field जोड़ता है) को स्वीकार करता है तो रेल स्वीकार्य शीर्षलेख को अनदेखा करता है। यह वास्तव में पुराने ब्राउज़र को "स्वीकार्य" शीर्षलेख भेजने के कारण है।

5

दोनों उत्तर ठीक हैं, लेकिन मैं एक महत्वपूर्ण बात जोड़ूंगा।

url = URI.parse('https://someurl.com') 
http = Net::HTTP.new(url.host, url.port) 
http.use_ssl = true 
req = Net::HTTP::Get.new(url.request_uri) 
req["header_name"] = header 
response = http.request(req) 

इस use_ssl आप मिल जाएगा 'EOFError (फ़ाइल के अंत तक पहुँच)' के बिना: आप https का उपयोग कर रहे हैं, तो आप देखेंगे कि आप SSL का उपयोग लाइन को जोड़ना होगा।

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