java.io.EOFException: неожиданный конец входного потока ZLIB - чтение из HTTP - PullRequest
1 голос
/ 21 июля 2011

Я попытался найти похожую проблему, но не смог найти решение, похожее на мою:

Я использую следующий фрагмент кода для чтения из HttpUrlConnection:

public static BufferedReader getConnectionReader(HttpURLConnection con, String url)
        throws Exception {
    con = (HttpURLConnection) new URL(url).openConnection();
    con.connect();
    if (cm != null) {
        cm.storeCookies(con);
    }
    if (con.getHeaderField("Content-Encoding") != null
            && con.getHeaderField("Content-Encoding").equalsIgnoreCase("gzip")) {
        return new BufferedReader(new InputStreamReader(new GZIPInputStream(con.getInputStream())));
    } else
        return new BufferedReader(new InputStreamReader(con.getInputStream()));
}

Чтениевыполняется следующим образом:

HttpURLConnection con = null;
reader = Utils.getConnectionReader(con, "http://www.site.com/page.html");
String line = null;
while ((line = reader.readLine()) != null) {
    log.info(line);
}

Иногда я получаю упомянутое исключение:

java.io.EOFException: неожиданный конец входного потока ZLIB

Когда я могу, я ловлю это исключение и повторяю операцию - успешно.

Проблема в том, что я не знаю, что вызывает это исключение, чтобы выскочить.Это происходит совершенно случайно.

Я хочу верить, что это проблема с сетью.

Кто-нибудь нашел способ полностью решить такую ​​проблему?

Спасибо !!

1 Ответ

0 голосов
/ 21 июля 2011

Метод, который вы используете, менее чем идеален для двоичных форматов, таких как GZip, я полагаю, вы делаете это только для тестирования?Помимо этого и ошибки в HTTPURLConnection, в коде не так много другого, что могло бы вызвать проблему.Я бы порекомендовал чтение с использованием замены байтового буфера, по крайней мере, чтобы устранить это как возможный источник ошибки.

...