Is it possible to pass both the GET and POST parameters at the same time?
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
In the script above, only the POST parameters get sent and the GET query is ignored
When creating the request you just need to make sure to keep the GET params in the path:
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
})
Notice that instead of just uri.path
, I append the ?
and uri.query
to it. This should pass the GET parameters as well as the POST ones.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With