Я разрабатываю долговременное приложение, которое сильно использует HttpClient из apache.
В моем первом тестовом прогоне приложение отлично работало, пока оно не застряло. Это не было остановлено, это не вызвало каких-либо исключений, оно просто сидит там, ничего не делая.
Я сделал второй запуск только сейчас и остановил время, и он остановился после ок. 24 часа подряд. Кроме того, я заметил, что подключение к Интернету моего ноутбука, на котором я его запускал, было прекращено в тот момент, когда приложение застряло. Мне пришлось перезагрузить адаптер WLAN, чтобы сеть снова запущена.
Приложение, однако, не вернулось к работе после того, как соединение снова запустилось. И теперь он снова застрял.
Есть ли какой-либо контроллер тайм-аута, о котором я не знаю в HttpClient? Почему мое приложение не выдает исключение, когда соединение не работает?
Часть, использующая клиент, выглядит следующим образом:
public HttpUtil(ConfigUtil config) {
this.config = config;
client = new DefaultHttpClient();
client.getParams().setParameter(HttpProtocolParams.USER_AGENT, this.config.getProperty("httputil.userAgent"));
}
public String getContentAsString(String url) throws ParseException, ClientProtocolException, IOException {
return EntityUtils.toString(
client.execute(
new HttpGet(url)).getEntity());
}
Приложение неоднократно вызывает httputil.getContentAsString()
для URL-адресов, которые ему нужны.