【问题标题】:Ruby throws Timeout::Error when calling Net::HTTP.get on an HTTPS URLRuby 在 HTTPS URL 上调用 Net::HTTP.get 时抛出 Timeout::Error
【发布时间】:2011-03-30 17:15:55
【问题描述】:

我已经在不同网络上的几台机器上尝试过这个,所有机器都运行 ruby​​ 1.8.7,经过长时间的等待,我得到了相同的结果。

Net::HTTP.get(URI.parse('https://encrypted.google.com/'))
  Timeout::Error: execution expired

但 HTTP 工作正常

Net::HTTP.get(URI.parse('http://www.google.com/'))

在初始超时后,我得到一个EOFError

  EOFError: end of file reached

这真的让我很难过。如果您有任何想法,或者如果您得到相同的结果,可以告诉我,我将不胜感激。

【问题讨论】:

    标签: ruby https timeout


    【解决方案1】:

    我认为你需要将 use_ssl 设置为 true...

    示例:

    uri = URI.parse("https://www.google.com/")
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    
    request = Net::HTTP::Get.new(uri.request_uri)
    
    response = http.request(request)
    
    puts response.body
    

    这是从以下 Ruby Inside post 蚕食的。

    【讨论】:

    • 谢谢布赖恩!这正是我需要知道的。在看到简单的 url_exists 的 Net::HTTP 有多复杂之后?打电话我想我会接受 Ruby Inside 的建议并选择 HTTParty,因为它给了我相同的结果,而且麻烦少了很多。 HTTParty.head('encrypted.google.com').response.is_a?(Net::HTTPSuccess)
    • 我认为这是个好主意... HTTParty 使 http 操作更容易使用 - 尽管有点繁重,因为它需要几个外部 gem(例如 activesupport)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2020-03-10
    • 2011-10-25
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多