2010-06-06 17 views
6

¿Es posible pasar los parámetros GET y POST al mismo tiempo?Ruby: ¿Net/http puede hacer una solicitud GET y POST simultáneamente?

uri = URI.parse("http://www.example.com/post.php?a=1&b=2") 

req = Net::HTTP::Post.new(uri.path, { 
    'Referer' => "http://www.example.com/referer", 
    'User-Agent'=> "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)", 
    'Cookie' => $cookie 
}) 

req.set_form_data({ 
    'foo' => 'bar', 
    'bar' => 'foo' 
}) 

http = Net::HTTP.new(uri.host, uri.port) 
http.open_timeout = 40 
http.read_timeout = 20 

# Request page: 
begin 
    resp = http.request(req) 
rescue Exception 
    puts "Exception requesting the page; returning" 
end 

En el guión anterior, sólo los parámetros POST enviadas y la consulta GET se ignora

Respuesta

4

Al crear la solicitud sólo tiene que asegurarse de mantener los parametros se interponen en el camino:

req = Net::HTTP::Post.new("#{uri.path}?#{uri.query}", { 
    'Referer' => "http://www.example.com/referer", 
    'User-Agent'=> "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)", 
    'Cookie' => $cookie 
}) 

Observe que en lugar de solo uri.path, añado el ? y uri.query a él. Esto debería pasar los parámetros GET y POST.

+0

Usted señor es un salvavidas. He estado lidiando con este problema durante las últimas horas. – ganeshran

+0

También puede usar 'uri.request_uri' para construir la cadena de solicitud con ruta y parámetros de consulta. – nates

Cuestiones relacionadas