Mechanize::ResponseReadError语言 - Content-Length与响应体长度不匹配



在使用Mechanize请求页面时遇到此错误:

Mechanize::ResponseReadError
Content-Length(17317)不匹配响应体长度(17070)(Mechanize::ResponseReadError)

任何关于为什么会发生这种情况的想法,以及我如何才能得到修复它是非常感激的!

有时候网站会返回错误的内容长度值。捕获错误并强制页面解析。

agent = Mechanize.new
begin
  page = agent.get 'http://bad.com'
rescue Mechanize::ResponseReadError => e
  page = e.force_parse
end

您也可以将agent.ignore_bad_chunking设置为true -但要注意可能的静默内容丢失。

这是因为Content-Length的头不等于response-body的长度。

检查以下机械宝石的规格。它会引发同样的错误。

  def test_response_read_content_length_mismatch
    def @res.content_length() 5 end
    def @res.read_body() yield 'part' end
    e = assert_raises Mechanize::ResponseReadError do
      @agent.response_read @res, @req, @uri
    end
    assert_equal 'Content-Length (5) does not match response body length (4)' 
      ' (Mechanize::ResponseReadError)', e.message
  end

相关内容

  • 没有找到相关文章

最新更新