我正在尝试通过一些代理服务器访问某些内容,但我得到:
<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_timeout
和start
undefined method `open_timeout=' for #<Net::HTTPOK 200 OK readbody=true>>
undefined method `start..
任何帮助?
答案 0 :(得分:1)
当您在代理(HTTP)课程上调用get_response
时,您会收到Net::HTTPResponse
个实例,但它不会回复start
或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)