我正在开发一个长时间运行的应用程序,大量使用来自Apache的HttpClient。HttpClient卡住没有任何异常
在我的第一次测试运行中,应用程序工作完美,直到它卡住了。它没有停止,它没有抛出任何异常,它只是坐在那里无所事事。
我刚刚做了第二次运行,并停止了时间,大约在第二次运行后停止。 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());
}
该应用程序在需要的URL上重复调用httputil.getContentAsString()
。
也许你的实体是一个空字符串。 – kasavbere 2012-03-29 12:20:11
然后我的方法仍然会返回那个空字符串,不是吗?或者至少抛出异常? – 2012-03-29 12:31:37
我有同样的问题。 httpEntity.consumeContent()救我。 http://stackoverflow.com/questions/9505358/android-httpclient-hangs-on-second-request-to-the-server-connection-timed-out – JamesC 2015-02-25 08:57:29