使用OpenURI或net / http进行Ruby代理身份validationGET / POST
我正在使用ruby 1.9.3并尝试使用open-uri
获取url并尝试使用Net:HTTP
发布
我试图使用代理身份validation:
尝试使用net/http
执行POST
请求:
require 'net/http' require 'open-uri' http = Net::HTTP.new("google.com", 80) headers = { 'User-Agent' => 'Ruby 193'} resp, data = http.post("/", "name1=value1&name2=value2", headers) puts data
对于我无法进行POST
open-uri
,我使用:
data = open("http://google.com/","User-Agent"=> "Ruby 193").read
如何修改这些以使用具有HTTP身份validation的代理
我试过(对于open-uri)
data = open("http://google.com/","User-Agent"=> "Ruby 193", :proxy_http_basic_authentication => ["http://proxy.com:8000/", "proxy-user", "proxy-password"]).read
但是我得到的只是一个OpenURI::HTTPError: 407 Proxy Authentication Required
。 我已经validation了所有,它在浏览器中使用相同的身份validation和代理详细信息,但我无法做到这一点。
如何修改上面的代码以正确添加http身份validation? 有没有人经历过这场暴行?
尝试:
require "open-uri" proxy_uri = URI.parse("http://proxy.com:8000") data = open("http://www.whatismyipaddress.com/", :proxy_http_basic_authentication => [proxy_uri, "username", "password"]).read puts data
至于Net :: HTTP,我最近在一个名为http的Net :: HTTP包装器库中实现了对具有http身份validation的代理的支持。 如果你查看我的最后一次拉动请求,你会看到基本的实现。
编辑:希望这会让你朝着正确的方向前进。
Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port,"username","password").start('whatismyipaddress.com') do |http| puts http.get('/').body end