我正在使用Crawler4J收集有关网站的信息。但有时我得到以下错误:
INFORMATION:获取内容时出现异常:{someurl}[内容长度分隔的消息正文过早结束(预期:X;收到:Y]
(对我来说)不清楚如果X <Y,反之亦然。>
异常抛出"fetcher.PageFetchResult.java"在fetchContent(我猜当获得响应头)。
所以我的问题是:是否有可能(通常)忽略http内容长度并获得信息?
我已经查找了crawler4j问题,但没有类似的问题。
也许stackoverflow社区有人有办法解决这个问题。
非常感谢,
Hisushi
编辑
抛出此异常的代码(片段):
public boolean fetchContent(Page page) {
try {
page.load(entity);
page.setFetchResponseHeaders(responseHeaders);
return true;
} catch (Exception e) {
logger.log(Level.INFO, "Exception while fetching content for: " + page.getWebURL().getURL() + " [" + e.getMessage()
+ "]");
}
return false;
}
responseHeaders和entity是null(默认):
protected HttpEntity entity = null;
protected Header[] responseHeaders = null;
Premature end of Content-Length delimited message body
通常意味着您在阅读整个内容长度之前与服务器断开连接,只需在代码中包含重试机制,以便您可以再次尝试,然后获得全文