Net::HTTPResponse.body_permitted?() Issue

Hi,

I am playing arround with Net::HTTP and have this little script to grap a websites HTML:

require "net/http"
page = "http://www.google.co.uk"
response = Net::HTTP.get_response(URI.parse(page))
puts response.body if response.body_permitted?

I aim to print out the body of the response object only if it is permitted but I get this:

NoMethodError: undefined method `body_permitted?' for #<Net::HTTPOK 200 OK readbody=true>

So I am not sure what is going on as get_response returns an HTTPResponce object so calling body_permitted?' on it should work.

Any ideas?

David.

If you mean you want to print the body only for a 200 (OK) response, then
one way is

require "net/http"
page = "http://www.google.co.uk"
response = Net::HTTP.get_response(URI.parse(page))
puts response.body if Net::HTTPSuccess === response

("ri Net::HTTP" gives a bunch of examples; if you search for get_response
you find this one, except written as a case statement)

I did a search for body_permitted? in /usr/lib/ruby/1.8/net/http.rb, and I
see it's defined as a class method, not an instance method. So the following
also works:

require "net/http"
page = "http://www.google.co.uk"
response = Net::HTTP.get_response(URI.parse(page))
puts response.body if response.class.body_permitted?

B.

ยทยทยท

On Sat, Mar 10, 2007 at 09:25:57PM +0900, David Madden wrote:

I am playing arround with Net::HTTP and have this little script to
grap a websites HTML:

require "net/http"
page = "http://www.google.co.uk"
response = Net::HTTP.get_response(URI.parse(page))
puts response.body if response.body_permitted?

I aim to print out the body of the response object only if it is
permitted but I get this:

NoMethodError: undefined method `body_permitted?' for #<Net::HTTPOK
200 OK readbody=true>

So I am not sure what is going on as get_response returns an
HTTPResponce object so calling body_permitted?' on it should work.