Net::HTTP.post_form method undefined?


#1

I’m trying to do a POST using net/http.

When I do:

r = Net::HTTP.post_form(u,{‘volumectrl’=>’-20’})

I get:

NoMethodError: undefined method `post_form’ for Net::HTTP:Class
from (irb):5

What am I doing wrong?

Thanks!


#2

On Jan 4, 2006, at 9:42, Alex F. wrote:

doesn’t exist in ruby 1.8. Annoying huh?
It exists in 1.8.3, it would seem:

[Prospero:~] matt% ruby -v
ruby 1.8.3 (2005-09-21) [powerpc-darwin8.3.0]
[Prospero:~] matt% ruby
require ‘net/http’
puts Net::HTTP.methods.include?(“post_form”)
true

I’ve used it with no problems at all, in the same basic format as the
original poster.

matthew smillie.


#3

Thanks Alex, that was it, I’m on 1.8.3.

“Alex F.” removed_email_address@domain.invalid wrote in message
news:removed_email_address@domain.invalid…


#4

itsme213 wrote:

I’m trying to do a POST using net/http.

r = Net::HTTP.post_form(u,{‘volumectrl’=>’-20’})

I get:

NoMethodError: undefined method `post_form’ for Net::HTTP:Class
from (irb):5

What ruby version are you running? I ran into this same problem last
week, and it was because the standard stdlib documentation (on ruby-doc)
refers to ruby 1.9, where the post_form method exists. It doesn’t exist
in ruby 1.8. Annoying huh?

Try something like:

  Net::HTTP.start('www.foo.com', 80) do | http |
    response = http.post('/cgi-bin/foo.cgi', encoded_post)
 end

Note that you’ll need to manually turn your hash into a URI-encoded
string. Look at URI.encode() in the stdlib.

alex