java - 是否可以忽略 Http Content-Length?

标签 java crawler4j http-content-length

我正在使用Crawler4J收集有关网站的信息。但有时我会收到以下错误:

INFORMATION: Exception while fetching content for: {someurl} [Premature end of Content-Length delimited message body (expected: X; received: Y]

(对我来说)不清楚它是否只在 X < Y 时发生,反之亦然。

异常在 fetchContent 的“fetcher.PageFetchResult.java”中抛出(我猜是在获取响应 header 时)。

所以我的问题是:是否有可能(通常)忽略http内容长度并获取信息?

我已经查过crawler4j的问题了,但是没有类似的问题。

也许 stackoverflow 社区的某个人知道如何解决这个问题。

非常感谢,

久志

编辑

抛出此异常的代码(片段):

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 和实体为 null(默认情况下):

protected HttpEntity entity = null;
protected Header[] responseHeaders = null;

最佳答案

内容长度分隔消息正文的过早结束通常意味着您在读取整个内容长度之前与服务器断开连接,只需在代码中包含重试机制,以便您可以重试,然后获取全身。

关于java - 是否可以忽略 Http Content-Length?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25261260/

相关文章:

java - 从java中的方法返回一个数组?

java - 如何使用 Java ScriptEngine 创建 Javascript 函数

java - 浏览 .jdb 输出?

java - 控制运行时要抓取的 URL 列表

apache - 总是在Apache中发送Content-Length吗?

http - 使用 gzip 编码数据时应该发送多长的内容?

Java:如何执行向-Infinity而不是0舍入的整数除法?

java - Spring:如何使用@PropertySource 导入不在类路径中的资源文件?

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/http/conn/scheme/SchemeSocketFactory while Using Crawler4j 中出现异常

PHP Content-Length header 不起作用