2

Web サイトに関する情報を収集するためにCrawler4Jを使用しています。しかし、時々次のエラーが発生します。

情報: {someurl} のコンテンツを取得中に例外が発生しました [Content-Length で区切られたメッセージ本文が途中で終了しました (予想: X; 受信: Y]

(私には) X < Y の場合に発生するのか、それともその逆なのかは明確ではありません。

例外は、fetchContent の「fetcher.PageFetchResult.java」でスローされます (応答ヘッダーを取得するときに推測します)。

私の質問は次のとおりです。(一般的に) http content-length を無視して情報を取得する可能性はありますか?

私はすでに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;
4

1 に答える 1

4

Premature end of Content-Length delimited message body通常、コンテンツ全体の長さを読み取る前にサーバーから切断されたことを意味します。再試行して本文全体を取得できるように、コードに再試行メカニズムを含めるだけです。

于 2014-08-12T14:52:33.927 に答える