【发布时间】:2012-03-29 12:16:44
【问题描述】:
我正在开发一个长时间运行的应用程序,它大量使用来自 apache 的 HttpClient。
在我的第一次测试运行中,该应用程序运行良好,直到它卡住了。它没有停止,也没有抛出任何异常,它只是坐在那里无所事事。
我刚刚进行了第二次跑步,并停止了时间,大约在 1 分钟后停止了。 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()。
【问题讨论】:
-
也许你的实体是一个空字符串。
-
那么我的方法仍然会返回那个空字符串,不是吗?或者至少抛出一个异常?
-
我也有同样的问题。 httpEntity.consumeContent() 救救我。 stackoverflow.com/questions/9505358/…
-
你解决过这个问题吗?
-
@Arya 这是一个超时问题。当我向连接添加超时时,它被解决了 IIRC(很久以前......)。连接的根本问题是什么,我不记得了。
标签: java apache-commons-httpclient