Ruby Mechanize Zlib :: BufError

abh*_*hir 5 ruby mechanize

不知道为什么我现在使用Mechanize gem得到这个错误 - 现在已经使用它一段时间没有问题.

我的脚本将随机停止并抛出以下错误:

/Users/username/.rvm/gems/ruby-1.9.3-p194/gems/mechanize-2.5.1/lib/mechanize/http/agent.rb:798:in `rescue in response_content_encoding': error handling content-encoding gzip: buffer error (Zlib::BufError) (Mechanize::Error)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

the*_*Man 5

您可能正在点击指向负载均衡器的URL.负载均衡器背后的主机之一是错误配置的,或者它的配置与其对等设备不同,并且正在返回内容的gzip压缩版本,而其他主机则没有.我过去见过这个问题.

我也看到了服务器的情况下说,这是返回gzip压缩的内容,但送的压缩.或者它可以发送压缩,而不是gzip压缩.组合很多.

修复是为了确保您的代码能够感知返回的内容是否被压缩.确保您将代码的正确可接受内容HTTP标头发送到他们的服务器.你必须进行防御性编程并查看你得到的实际内容,然后进行分支以进行正确的解压缩,然后将其传递给解析.


Sam*_*man 5

我能够通过设置如下的请求标头来解决这个问题:

mechanize.request_headers = { "Accept-Encoding" => "" }