res = Net::HTTP.post_form(URI.parse('http://www.google'),
{'search'=>'text', 'max'=>'50'})
You have a few problems here. First, Google's search won't accept a
POST. You have to use GET which has a different syntax. Other search
engines might take a POST though.
i get:
/usr/lib/ruby/1.8/net/http.rb:1470:in `initialize': HTTP request path is
empty (ArgumentError)
You're using 'http://www.google' which isn't valid. Michael partially
fixed it by adding '.com', but running that will still yield the same
error (empty path).
The POST method has to have a path to post to. At the very least,
you'll need to use 'http://www.google.com/' (notice the slash at the
end). Again, this is assuming the site you're using will take a POST
-- Google won't and, even if it did, '/' wouldn't be the right path
(it would be '/search').
Based on your example, it looks as though you've found the
documentation for Net::HTTP (at RDoc Documentation ). That
should have everything you need to get a POST or GET working, but that
depends on the site you actually want to hit.
Generally, if you run a search and end up with a URL that ends in '?
name1=value1&name2=value2' (like Google's '&q=hello'), you'll need
GET. Otherwise, use POST.
You can also view the source of the search form and find the method
that is used (e.g. <form method="POST" action='/a_path'>). If one
isn't listed (Google doesn't list the method), it's GET.
Finally, if you really want Google results here's an example of a GET
that will work:
require 'net/http'
uri = URI.parse('hello - Google Search)
# or: uri = URI::HTTP.build({:host => 'www.google.com', :path => '/
search', :query => 'q=hello'})
Net::HTTP.start(uri.host) do |http|
response = http.get(uri.request_uri)
# do something with the response
end
This is similar to Example 3 in the 'Getting Document From WWW Server'
section of the Net::HTTP docs.
···
On Nov 30, 2:12 pm, beny 18241 <beny18...@gmail.com> wrote: