Android HttpsUrlConnection java.io.EOFException

android inputstream httpsurlconnection

411 просмотра

2 ответа

6 Репутация автора

У меня проблема с тем, что мой HttpsURLConnection выдает исключение EOFException, когда я пытаюсь открыть этот URL: http://www.weather.com.cn/data/cityinfo/101210101.html

Код:

URL url = new URL("http://www.weather.com.cn/data/cityinfo/101210101.html");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
InputStream in = new BufferedInputStream(connection.getInputStream());
StringBuffer out = new StringBuffer();
byte[] b = new byte[1024];
for(int n;(n = in.read(b)) != -1;){
    out.append(new String(b, 0, n));
}

Следующее является StackTrace :

java.io.EOFException
    at com.android.okio.RealBufferedSource.require(RealBufferedSource.java:64)
    at com.android.okio.RealBufferedSource.readIntLe(RealBufferedSource.java:115)
    at com.android.okio.GzipSource.consumeTrailer(GzipSource.java:168)
    at com.android.okio.GzipSource.read(GzipSource.java:87)
    at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:168)
    at java.io.InputStream.read(InputStream.java:162)
    at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:149)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:295)
    at java.io.InputStream.read(InputStream.java:162)
    at com.coolweather.app.coolweather.util.HttpUtil$1.run(HttpUtil.java:47)
    at java.lang.Thread.run(Thread.java:818)
Автор: gou pigao Источник Размещён: 18.07.2016 04:00

Ответы (2)


0 плюса

229 Репутация автора

Вы можете добавить connection.setRequestProperty( "Accept-Encoding", "" );после, connection.setRequestMethod("GET");потому что заголовок http ответа URL-адреса "Content-Encoding:gzip". Вы можете увидеть объяснение здесь и другое здесь .

Автор: Buddy Размещён: 27.10.2016 05:58

2 плюса

31 Репутация автора

У меня такая же проблема. Я исправил это, добавив:

connection.setRequestProperty("Accept-Encoding", "musixmatch");

или же

connection.setRequestProperty("Accept-Encoding", "");

после connection.setRequestMethod("GET");

Настройка connection.setRequestProperty («Accept-Encoding», «»); эффективно исправил проблему, потому что он больше не ждет gzip-вывода и не вызывает тайм-аут.

подробнее: https://code.google.com/p/android/issues/detail?id=24672

Автор: Devin Размещён: 01.12.2016 03:15
Вопросы из категории :
32x32