On 11/nov/06, at 02:05, gregarican wrote:
valid choices…
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:[email protected]/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.