2010-06-06 2 views
6

Можно ли одновременно передавать оба параметра GET и POST?Ruby: Может ли net/http выполнить запрос GET и POST одновременно?

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 

В приведенном выше сценарии, только параметры POST присылают и запрос GET игнорируется

ответ

4

При создании запроса вам просто необходимо убедиться, чтобы сохранить ГЭТ Params в пути:

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 
}) 

Обратите внимание, что вместо uri.path я прилагаю к нему ? и uri.query. Это должно передать параметры GET, а также POST.

+0

Вы, сэр, спасатель. Я занимаюсь этой проблемой в течение последних часов. – ganeshran

+0

Вы также можете использовать 'uri.request_uri' для построения строки запроса с параметрами пути и запроса. – nates

Смежные вопросы