【问题标题】:Making HTTP HEAD request with timeout in Ruby在 Ruby 中使用超时发出 HTTP HEAD 请求
【发布时间】:2011-11-04 18:45:16
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby http request http-head


    【解决方案1】:

    试试这个 sn-p:

    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
    

    希望这就是你要找的。​​p>

    更新

    因为有head方法看起来像

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

    你也可以用这个sn-p:

    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
    

    【讨论】:

    • 谢谢。 Net::HTTP::Head.new('/') 应该是 http.head('/') 吗? (doc)
    • 随意使用任何方法 - http.head() 是请求创建的缩写并将它们发送到服务器。为了清楚起见,我已经更新了我的初始帖子
    • @WarHog 你确定http.open_timeout 有什么作用吗?我的印象是它只用于打开连接,我相信这是由Net::HTTP.start完成的。
    猜你喜欢
    • 2013-04-25
    • 2019-10-20
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2011-06-02
    相关资源
    最近更新 更多