2012-04-06 20 views
6

estoy usando Ruby 1.9.3 y tratando de utilizar open-uri para obtener una URL e intentar publicar usando Net:HTTPautenticación de proxy Rubí GET/POST con OpenURI o net/http

Im tratando de utilizar la autenticación de proxy para ambos:

Tratar de hacer una solicitud con POSTnet/http:

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 

Y para open-uri que no puedo llegar a hacer POST que utilizo:

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

¿Cómo podría modificar estos para utilizar un proxy con autenticación HTTP

He tratado (para-abierta URI)

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

Sin embargo todo lo que se obtiene es un OpenURI::HTTPError: 407 Proxy Authentication Required. Lo he verificado todo y funciona en el navegador con la misma autenticación y detalles de proxy, pero no puedo conseguir que Ruby lo haga.

¿Cómo modificaría el código anterior para agregar autenticación http correctamente? ¿Alguien ha pasado por esta atrocidad?

Respuesta

14

Probar:

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 

En cuanto a Net :: HTTP, que recientemente puso en marcha soporte para servidores proxy con autenticación HTTP en un Net :: HTTP envoltorio biblioteca llamada http. Si miras mi última solicitud de extracción, verás la implementación básica.

EDIT: Espero que esto te ayude a moverte en la dirección correcta.

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