Ruby:net / http可以同时发出GET和POST请求吗?

时间:2010-06-06 22:50:35

标签: ruby uri

是否可以同时传递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 个答案:

答案 0 :(得分:4)

创建请求时,您只需确保将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参数。