In a Rails app, I'd like to make a HTTP HEAD request for a resource (a user-provided URL), to make sure that it exists. I'd also like a timeout, to ensure that the method fails after spending a reasonable period of time waiting. What is the most straightforward way to accomplish this (using the standard library, if possible)?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Try this snippet:
require 'net/http'
Net::HTTP.start('www.some_site.com') do |http|
http.open_timeout = 2
http.read_timeout = 2
req = Net::HTTP::Head.new('/')
http.request(req).each { |k, v| puts "#{k}: #{v}" }
end
Hope this is what you're looking for.
UPDATE
Because there is head
method that looks like
def head(path, initheader = nil)
request(Head.new(path, initheader))
end
You can also use this snippet:
require 'net/http'
Net::HTTP.start('www.rubyinside.com') do |http|
http.open_timeout = 2
http.read_timeout = 2
http.head('/').each { |k, v| puts "#{k}: #{v}" }
end