在Ruby中使用超时发出HTTP HEAD请求
在Rails应用程序中,我想为资源(用户提供的URL)发出HTTP HEAD请求,以确保它存在。 我也想要超时,以确保在花费一段合理的时间等待之后该方法失败。 实现这一目标最直接的方法是什么(如果可能,使用标准库)?
试试这个片段:
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
希望这是你正在寻找的。
UPDATE
因为有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