Я занимаюсь разработкой долго работающего приложения, в котором интенсивно используется 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это нужно.