From: yermej Date: 2009-12-01T10:16:21+09:00 Subject: Re: Net::http On Nov 30, 2:12 pm, beny 18241 wrote: >    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 http://ruby-doc.org/stdlib ). 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.
). 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('http://www.google.com/search?q=hello') # 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.