Я работаю над приложением 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)
Я прочитал об этой проблеме на форумах и понял, что эта проблема возникает, если длина содержимого, указанного в заголовке запроса, не совпадает сразмер ответа.
Как мне избежать этого исключения?
Буду признателен за любые предложения и мысли на эту тему.Спасибо.