Ruby: Может ли net / http одновременно выполнять запросы GET и POST? - PullRequest
6 голосов
/ 07 июня 2010

Можно ли одновременно передавать параметры 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 игнорируется

1 Ответ

4 голосов
/ 17 марта 2011

При создании запроса вам просто нужно сохранить параметры GET в пути:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...