Android:使用.net webservice获取响应时网络超时

时间:2013-10-31 13:34:00

标签: android web-services

我需要使用.net webservice导入大量数据(超过1000行), 它显示"network timeout error",从1000 +

中成功获得约200-300条记录

导入整个数据的方法应该是什么?

2 个答案:

答案 0 :(得分:1)

我认为问题可能与在连接超时到期之前将所有1000行插入数据库花费太长时间有关。

我可以通过两种方式来解决这个问题。

要么增加连接超时,这可能不是最好的解决方案。如果您遇到小型Internet连接问题或数据库所在的服务器运行速度比正常情况慢,您最终可能会插入一些记录但不是全部。

我个人认为最好的方法是拆分查询,使其只返回,一次说100行。即它获得前100个,将它们插入到数据库中,成功完成后,检索接下来的100条记录并调用Web服务插入100行,成功后获取下100条记录,依此类推。

希望这会有所帮助。

答案 1 :(得分:0)

要解决超时问题,您需要在HttpClient中实施超时。

有两种类型的超时。

  1. 连接超时:设置超时,直到建立连接。
  2. 会话超时:设置默认套接字超时(SO_TIMEOUT),以毫秒为单位,即等待数据的超时时间。
  3. 您需要设置如下所示的超时时间。

    HttpParams httpParams = new BasicHttpParams();
    
    //50 secs connection time out
    HttpConnectionParams.setConnectionTimeout(httpParams,50 * 1000); 
    //50 secs session time out
    HttpConnectionParams.setSoTimeout(httpParams, 50 * 1000); 
    
    HttpClient httpClient = new DefaultHttpClient(httpParams);