在使用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