ada*_*a91 16 ruby proxy http net-http
我正在尝试设置代理并在文档中的简单get请求中使用它.但我总是收到错误!地址和端口是正确的,它是开放的,它工作..它的
http://proxy:8080.
proxy_addr = 'proxy'
proxy_port = 8080
Net::HTTP.new('google.de', nil, proxy_addr, proxy_port).start { |http|
# always proxy via your.proxy.addr:8080
Net::HTTP.get('google.de', '')
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?谢谢你的回答!
Fra*_*bot 23
Net::HTTP.new('google.de', nil, proxy_addr, proxy_port).start { |http|
Run Code Online (Sandbox Code Playgroud)
这将创建一个http对象供您在块中使用.在这里使用它而不是每次生成新的Net::HTTP.get('google.de', '')
proxy_addr = 'proxy'
proxy_port = 8080
Net::HTTP.new('google.de', nil, proxy_addr, proxy_port).start { |http|
# always proxy via your.proxy.addr:8080
http.get('google.de', '')
}
Run Code Online (Sandbox Code Playgroud)
Mih*_*kov 21
还有另一种选择:
如果存在,Net :: HTTP将自动从http_proxy
环境变量创建代理.
所以你可以使用
ENV['http_proxy'] = 'http://172.16.3.160:4226' # your http://address:port here
Run Code Online (Sandbox Code Playgroud)
默认情况下,Net :: HTTP会将它用于所有请求.
它可以是在第三方库net_http请求(例如,它适用于创业板有帮助长臂猿为MailChimp).
传递nil代理地址以禁用默认值http_proxy.
如果您在代理后面进行REST api调用,则以下代码可用:
require "uri"
require 'net/http'
proxy_host = '<proxy addr>'
proxy_port = '<proxy_port'
proxy_user = '<username>'
proxy_pass = '<password>'
uri = URI.parse("https://saucelabs.com:80/rest/v1/users/<username>")
proxy = Net::HTTP::Proxy(proxy_host, proxy_port, proxy_user, proxy_pass)
req = Net::HTTP::Get.new(uri.path)
req.basic_auth(<sauce_username>,<sauce_password>)
result = proxy.start(uri.host,uri.port) do |http|
http.request(req)
end
puts result.body
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23993 次 |
| 最近记录: |