Я нахожу это более читабельным
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» (Accept: application/json
) в приложение Rails, вы не можете сделать:
req.add_field("Accept", "application/json")
но сделать:
req['Accept'] = 'application/json'
Причина этого в том, что Rails игнорирует заголовок Accept, когда он содержит «, /» или «/,» и возвращает HTML (который добавляет add_field
). Это связано с тем, что действительно старые браузеры отправляют неправильные заголовки «Accept».