require 'rubygems'
require 'mechanize'
a = Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari' }
a.get(:url => 'http://example.com',
:headers => {'Accept' => 'text/xml', 'Connection' =>'keep-live'}
)
puts a.page.body
If mechanize found error code '401' (for example) then mechanize will raise error message:
/usr/lib/ruby/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:614:in
`fetch_page': 401 => Net::HTTPUnauthorized (Mechanize::ResponseCodeError)
from /usr/lib/ruby/gems/1.8/gems/mechanize-1.0.0/lib \
/mechanize.rb:259:in `get'
from agent-test.rb:6
I dont know but what i really want from this gem is return 'http error message' rather than raise an error and die (if they found http error codes).
So far to get things done maybe i'll replace this line of code (mechanize.rb, def fetch_page)
raise ResponseCodeError.new(page) unless @user || @password
With
return page unless @user || @password
Also you can watch the request here http://github.com/tenderlove/mechanize/issues#issue/16
**Update**
Maybe using rescue is better
begin
a.get(:url => 'http://example.com',
:headers => {
'Accept' => 'text/xml',
'Connection' =>'keep-alive'
})
rescue WWW::Mechanize::ResponseCodeError
puts $!.page.body
end