Мой HTTP-клиент apache считывает данные с сервера, который отправляет нам потоковую передачу HTTP (в виде фрагментированных данных).
У меня есть входной поток и Buffered Reader для получения данных и чтения этих данных с использованием метода Buffered Data readLine.
InputStream inputStream = httpEntity.getContent();
br= new BufferedReader(new InputStreamReader(inputStream));
while ((line = br.readLine()) != null)
Я хочу закрыть соединение, если получу неправильный ответ от сервера.
Для этого я создаю timertask с временным интервалом, чтобы закрыть мое соединение. Я анализирую ответ каждый раз, когда я его получаю, чтобы проверить правильность ответа, если ответ правильный, то я сбрасываю задание времени. Если я нахожу неправильный ответ в этом случае, я не сбрасываю таймер (и позволяю таймеру выполняться до времени, на которое он был ранее установлен)
Я хочу знать, может ли помочь использование небуферизованного ввода-вывода? или мне нужен какой-то другой подход?
Проблема, которую я вижу, заключается в том, что, поскольку соединение открыто, моя задача таймера не может закрыть соединение. inputStream.close или bufferReader.close оба не могут выполняться (кажется, бесконечно ждут)