2012-04-06 16 views
6

Ich verwende Rubin 1.9.3 und versuche open-uri zu verwenden, um eine URL zu bekommen und versuchen, mit Net:HTTPRuby-Proxy-Authentifizierung GET/POST mit openURI oder net/http

Im Posting versuchen, die Proxy-Authentifizierung für beide zu verwenden:

Der Versuch, eine POST Anfrage mit net/http zu tun:

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 

Und für open-uri denen bekomme ich kann nicht POST zu tun, verwende ich:

data = open("http://google.com/","User-Agent"=> "Ruby 193").read 

Wie würde ich diese modifizieren, um einen Proxy mit HTTP-Authentifizierung zu verwenden

ich versucht habe (für Open-uri)

data = open("http://google.com/","User-Agent"=> "Ruby 193", :proxy_http_basic_authentication => ["http://proxy.com:8000/", "proxy-user", "proxy-password"]).read 

aber alles, was ich bekommen ein OpenURI::HTTPError: 407 Proxy Authentication Required ist. Ich habe alles verifiziert und es funktioniert im Browser mit den gleichen Authentifizierungs- und Proxy-Details, aber ich kann Ruby nicht dazu bringen.

Wie würde ich den obigen Code ändern, um die http-Authentifizierung richtig hinzuzufügen? Hat jemand diese Grausamkeit durchgemacht?

Antwort

14

Versuchen:

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 

Wie für Net :: HTTP, ich implementiert kürzlich Unterstützung für Proxys mit HTTP-Authentifizierung in eine Net :: HTTP-Wrapper-Bibliothek http genannt. Wenn Sie sich meine letzte Pull-Anfrage ansehen, sehen Sie die grundlegende Implementierung.

EDIT: Hoffentlich bringt Sie das in die richtige Richtung.

Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port,"username","password").start('whatismyipaddress.com') do |http| 
    puts http.get('/').body 
end 
Verwandte Themen