Закрытие HttpURLConnection до завершения ответа

Справочная информация

Я использую HttpURLConnection на стороне клиента, чтобы получить ответ в ситуации потоковой передачи HTTP (push-уведомления сервера). . Хотя сервер может закрыть соединение, закрыв ответ, клиент также должен иметь возможность сделать это.

Проблема

Клиент обрабатывает InputStream в отдельном потоке, например:

@Override
public void run() {
    try {
        for (int b = in.read(); b >= 0; b = in.read()) {
            char c = (char) b;
            // Do something with the character
            // ...
        }
    }
    catch (IOException e) {
    }
}

Итак, когда я вызываю HttpURLConnection.disconnect () из потока, который инициировал соединение (важная часть информации заключается в том, что это другой поток, чем тот, который обрабатывает ввод), этот вызов зависает на неопределенное время. Я даже оставил его на ночь, а он все еще висел. Даже вызов Thread.interrupt () не помог.

Есть предложения?

6
задан Distortum 27 November 2011 в 06:27
поделиться