2

在 Rails 应用程序中,我想对资源(用户提供的 URL)发出 HTTP HEAD 请求,以确保它存在。我还想要一个超时,以确保该方法在花费一段合理的时间等待后失败。实现此目的最直接的方法是什么(如果可能,使用标准库)?

4

1 回答 1

11

试试这个片段:

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

希望这就是你要找的。

更新

因为有head看起来像的方法

def head(path, initheader = nil)
  request(Head.new(path, initheader))
end

您还可以使用此代码段:

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
于 2011-11-04T19:32:13.973 回答