我在使用Mechanize请求页面时遇到此错误:
Mechanize :: ResponseReadError
Content-Length(17317)不匹配 响应体长度(17070)(Mechanize :: ResponseReadError)
对于为什么会发生这种情况以及如何解决这个问题的任何想法都非常感谢!
答案 0 :(得分:1)
网站会返回错误的内容长度值。捕获错误并强制页面解析。
agent = Mechanize.new
begin
page = agent.get 'http://bad.com'
rescue Mechanize::ResponseReadError => e
page = e.force_parse
end
您也可以将agent.ignore_bad_chunking
设置为true - 但请注意可能的静默内容丢失。
答案 1 :(得分:0)
这是因为Content-Length
标题不等于response-body
长度的大小。
检查mechanize gem拍摄的以下规格。它会引起同样的错误。
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