【发布时间】:2011-10-06 00:26:15
【问题描述】:
我的应用程序中有一个非常大的错误,我似乎真的无法解决。每当我通过以下代码拨打休息电话时:
HttpGet request = new HttpGet(url + getParams());
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 10000);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
httpClient.execute(request);
我在 DDMS 中得到错误:
07-15 11:22:47.448: WARN/System.err(973): org.apache.http.conn.ConnectTimeoutException: Connect to (some ip-address) timed out
但有时代码运行良好,我收到了应有的数据。我还通过计算机上的普通网络浏览器测试了其余服务器调用,它总是在 100 毫秒内返回我的数据。那么我做错了什么?我还在另一台设备上对其进行了测试,但这给了我同样的问题。如果有人能解决我的问题,我会很高兴:)
【问题讨论】:
-
这可能与网络速度慢有关(您使用的是 Wi-Fi 还是 3G?)。尝试在模拟器中运行它。您可能需要增加连接超时并设置重试机制。
-
是的,但是使用我的其他应用程序,我可以一直获取请求的数据。我正在使用其中一部手机使用 WiFi,但那部手机也给了我例外。而且据我所知,httpclient有自动重试机制?
-
将超时时间增加到 20-30 秒。有时,线路可能很忙,因此超时。
-
好吧,我把超时时间增加到 20 秒:HttpConnectionParams.setConnectionTimeout(httpParameters, 20000); HttpConnectionParams.setSoTimeout(httpParameters, 20000);但是我仍然有同样的情况,数据很少被加载,而且大部分都没有收到任何东西
-
嘿 Martijn538 你找到解决超时问题的方法了吗?
标签: android rest httpclient http-get connection-timeout