documentation のような単純なgetリクエストでプロキシを設定して使用しようとしています。しかし、常にエラーが表示されます。アドレスとポートはopen-uriで正しく動作します。それは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', '')
}
何が悪いのですか?すべての回答をありがとう!
_Net::HTTP.new('google.de', nil, proxy_addr, proxy_port).start { |http|
_
これにより、ブロックで使用する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', '')
}
_
別のオプションがあります:
Net :: HTTPは、存在する場合、http_proxy
環境変数からプロキシを自動的に作成します。
だからあなたは使うことができます
ENV['http_proxy'] = 'http://172.16.3.160:4226' # your http://address:port here
そしてNet :: HTTPはデフォルトですべてのリクエストにそれを使用します。
サードパーティライブラリのnet_httpリクエストに役立ちます(たとえば、gem gibbon for 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