HttpClient执行不断给出ConnectTimeoutException

Mar*_*538 5 rest android http-get httpclient connection-timeout

我的应用程序中有一个非常大的错误,我似乎无法解决.每当我通过以下代码进行休息呼叫时:

  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);
Run Code Online (Sandbox Code Playgroud)

我在DDMS中收到错误:

07-15 11:22:47.448: WARN/System.err(973): org.apache.http.conn.ConnectTimeoutException: Connect to (some ip-address) timed out
Run Code Online (Sandbox Code Playgroud)

但有时候代码工作得很完美,我会收到我应该的数据.我还通过计算机上的普通webbrowser测试了其余的服务器调用,并且总是在100ms内返回我的数据.那么我做错了什么?我也在另一台设备上测试了它,但这给了我同样的问题.如果有人能解决我的问题,我会很高兴:)

小智 5

问题是DefaultHttpClient.你是异步使用它吗?由于DefaultHttpClient它不是线程安全的,因此在异步环境中使用它可能会导致问题.在我的活动同时启动多个Http连接之前我遇到了这个问题,最后我改变了它的使用方法HttpURLConnection.您可以参考以下网站:http://www.vogella.de/articles/AndroidNetworking/article.html


Rav*_*yas 0

检查您是否能够使用开发计算机进行连接,并检查加载时间。您的超时很有可能太小。