Mechanize and Content Encoding Error

Hello guys.

I’m trying to get some files from a webpage using Mechanize. Something
like this:

begin
Timeout::timeout(25){
res = agent.get(remote_file).save_as(filename)
}
rescue SocketError => e
log.error ‘Fail saving the file ‘+filename+’: SocketError’
end
rescue SystemCallError => e
log.error ‘Fail saving the file ‘+filename+’: SystemCallError’
end
rescue Timeout::Error => e
log.error ‘Fail saving the file ‘+filename+’ Timeout::Error’
end
rescue Net::HTTPBadResponse => e
log.error ‘Fail saving the file ‘+filename+’ HTTPBadResponse’
end
rescue Mechanize::ResponseCodeError => e
log.error ‘Fail saving the file ‘+filename+’
Mechanize::RespError’
end
end

Everything was working perfectly till I found a page that, if we access
using browser, we get the following error:

Content Encoding Error

(http://support.mozilla.com/en-US/kb/error%20loading%20web%20sites#w_content-encoding-error)

When I get a page like that I get the following exception:

/var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize/chain/body_decoding_handler.rb:24:in
inflate': invalid stored block lengths (Zlib::DataError) from /var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize/chain/body_decoding_handler.rb:24:inhandle’
from
/var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize/chain.rb:29:in
pass' from /var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize/chain/handler.rb:6:inhandle’
from
/var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize/chain/response_reader.rb:35:in
handle' from /var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize/chain.rb:24:inhandle’
from
/var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:543:in
fetch_page' from /usr/lib/ruby/1.8/net/http.rb:1053:inrequest’
from /usr/lib/ruby/1.8/net/http.rb:2140:in reading_body' from /usr/lib/ruby/1.8/net/http.rb:1052:inrequest’
from
/var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:538:in
fetch_page' from /var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:611:infetch_page’
from
/var/lib/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:259:in `get’

How can I handle this exception?
SystemCallError shouldn’t handle all kind of exceptions, including this
one?
Any ideas?

Thanks,

Luis

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs