2

我试图通过一些代理服务器访问一些内容,但我得到:

<Errno::ETIMEDOUT: Connection timed out - connect(2)>

我修改了代码并尝试增加超时,如下所示:

require 'open-uri'
require 'net/http'


response = Net::HTTP::Proxy(proxy_ip, proxy_port).get_response(uri.host, uri.path)
response.start(uri.host) do |http|
  http.open_timeout = 5 
  http.read_timeout = 10
end

现在它无法识别open_timeoutstart

undefined method `open_timeout=' for #<Net::HTTPOK 200 OK readbody=true>>
undefined method `start..

有什么帮助吗?

4

1 回答 1

1

当您调用get_responseProxy(HTTP) 类时,您会得到一个Net::HTTPResponse实例,但它不会响应startor open_timeout=

用于Net::HTTP::Proxy创建代理 HTTP 类,创建该类的实例,然后修改该实例的超时设置。然后您可以使用该实例从代理后面获取内容。

proxy_http = Net::HTTP.Proxy(proxy_ip, proxy_port).new(uri.host)
proxy_http.open_timeout = 5
proxy_http.read_timeout = 10
response = proxy_http.get(uri.path)
于 2013-06-05T13:41:56.203 回答