Net::HTTP does the job.
You can see examples on http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html , I'm copypasting here the POST ones:
require 'net/http'
require 'uri'
#1: Simple POST
res = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'\),
{'q'=>'ruby', 'max'=>'50'})
puts res.body
#2: POST with basic authentication
res = Net::HTTP.post_form(URI.parse('http://jack:pass@www.example.com/todo.cgi'\),
{'from'=>'2005-01-01', 'to'=>'2005-03-31'})
puts res.body
#3: Detailed control
url = URI.parse('http://www.example.com/todo.cgi'\)
req = Net::HTTP::Post.new(url.path)
req.basic_auth 'jack', 'pass'
req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
case res
when Net::HTTPSuccess, Net::HTTPRedirection
# OK
else
res.error!
end
If you need HTTPS make sure to require 'net/https' and use something like this:
#3: Detailed control
url = URI.parse('http://www.example.com/todo.cgi'\)
req = Net::HTTP::Post.new(url.path)
req.basic_auth 'jack', 'pass'
req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')
http = Net::HTTP.new(url.host, url.port) # lines
http.use_ssl = true # modified
res = http.start {|http| http.request(req) } # by me
case res
when Net::HTTPSuccess, Net::HTTPRedirection
# OK
else
res.error!
end
I didn't actually test this code but I think it should work.
By the way, it doesn't support cookies as far as I know.
In fact I needed a library with which I could interact with a website that needed a session id stored in a cookie (and not encoded within the URL) and I wasn't able to find any.
···
On 11/nov/06, at 02:05, gregarican wrote:
For a business banking app I needed to script out something that would
upload a PGP-encrypted text file through a HTTPS POST command. Since
Ruby is my language of choice for quick hitters like this I looked into
using it for the HTTPS POST part of the puzzle. After googling around
for awhile I didn't run across anything blatantly obvious as a
solution.
I use the One-Click Installer for Windows version of Ruby 1.8.4 as my
primary development tool. I only saw 'net/http' and not 'net/https' as
valid choices...
--
Gabriele Marrone