Или думаете, что перехватчик для этого сценария применим?
Наше приложение использует OkHttp для загрузки файлов (новая версия приложения, ежедневные базы данных и т. Д.)
Иногда происходит сбой сервера в тот момент, когда приложение передает потоковые байты (кстати, проблема в том, что recvfrom не удалось: ECONNRESET)
Итак, чтобы исправить это, я просто хотел написать перехватчик попыток OkHttp. Но, похоже, это подходит для операций, которые не являются потоковыми.
Есть ли решение (например, перехватчик) для обработки этого случая?
Чтобы сделать экспозицию более понятной
0% ==================================== 100% ( только что начал потоковую передачу)
0% === ================================= 100% ( 10% выполнено * * тысяча двадцать-одина)
0% ====== ============================== 100% ( 20% выполнено )
0% ====== ============================== 100% ( ECONNRESET - Соединение сброс по пиру )
В этот момент потоковая передача останавливается. От OkHttp я хочу, чтобы распознал эту ситуацию и запустил поток с нуля (не с 20%)
Связанный код здесь, обратите внимание на комментарии
Call call = client.newCall(new Request.Builder().url(url).get().build());
Response response = call.execute();
// PROBLEM DOES NOT OCCUR THERE
// PROBLEM DOES NOT OCCUR THERE
// PROBLEM DOES NOT OCCUR THERE
if (response.code() == 200 || response.code() == 201) {
InputStream inputStream = null;
try {
long downloaded = 0;
byte[] buff = new byte[1024 * 4];
inputStream = response.body().byteStream();
long target = response.body().contentLength();
while (true) {
// EXCEPTION OCCURS THERE
// EXCEPTION OCCURS THERE
// EXCEPTION OCCURS THERE
int read = inputStream.read(buff);
if (read == -1) {
break;
}
downloaded += read;
}
...
} catch (IOException e) {
// EXCEPTION SAYS
// ECONNRESET - Connection reset by peer
...
}
}