java.net.ProtocolException: неожиданный конец потока Android - PullRequest
0 голосов
/ 11 июня 2018

Я работаю над приложением Android, где я загружаю файлы с сервера, используя следующий код: Код:

    myURLConnection = (HttpURLConnection) myURL.openConnection();
    myURLConnection.setUseCaches(false);
    myURLConnection.setDoInput(true);


     int status = myURLConnection.getResponseCode();
     BufferedInputStream is = new BufferedInputStream(myURLConnection.getInputStream());
     FileOutputStream result = new FileOutputStream(app_context.getFilesDir() + ""+a.getKey(), true);
     byte[] buffer = new byte[1024];
     int length;

    while ((length = is.read(buffer)) != -1) {
          result.write(buffer, 0, length);
      }

     result.flush();
     result.close();
     is.close();

Иногда код генерирует следующее исключение.

Ошибка трассировки стека:

java.net.ProtocolException: unexpected end of stream
    at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:449)
    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)

Я прочитал об этой проблеме на форумах и понял, что эта проблема возникает, если длина содержимого, указанного в заголовке запроса, не совпадает сразмер ответа.

Как мне избежать этого исключения?

Буду признателен за любые предложения и мысли на эту тему.Спасибо.

...