使用HttpClient setConnectionTimeout无效的解决

public static  void  connectNetwork(String strUrl ,String [] strParams,String [] datas){
   try 
      {    
       HttpPost httpRequest=null;         
       List<NameValuePair> params=null; 
       HttpResponse httpResponse=null; 
       //建立HttpPost链接 
       httpRequest=new HttpPost(strUrl); 
       HttpParams httpParams = new BasicHttpParams();
    
       System.out.println("连接超时:"+HttpConnectionParams.getConnectionTimeout(httpParams)+" ms");
       System.out.println("请求超时 :"+HttpConnectionParams.getConnectionTimeout(httpParams)+" ms");
     
      
       //Post操作参数必须使用NameValuePair[]阵列储存 
       params= new ArrayList<NameValuePair>(); 
       int   strParamsLen =  strParams.length;
    
       for(int i = 0; i < strParamsLen; ++i){
           params.add(new BasicNameValuePair(strParams[i],datas[i])); 
       }
       
          //发送Http Request 
          httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));   
          //设置连接超时
       HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
       HttpConnectionParams.setSoTimeout(httpParams, 10000);
      
       //在此设置httprequest请求的参数,如果不设置则之前设置的所有超时时间都无用。
       httpRequest.setParams(httpParams);
          //取得Http Response 
          HttpClient  dhc = new DefaultHttpClient(); 
          HttpParams hp =   httpRequest.getParams();
         
          System.out.println("--------------------");
       System.out.println("连接超时:"+HttpConnectionParams.getConnectionTimeout(hp)+" ms");
       System.out.println("请求超时 :"+HttpConnectionParams.getConnectionTimeout(hp)+" ms");
        
          httpResponse = dhc.execute(httpRequest);
        
         
          //若状态码不为200 
          if(httpResponse.getStatusLine().getStatusCode()!=200) 
          {   
           System.err.println("server response  not 200");
              return   ;
        
          }
      }catch(SocketException ee){
       ee.printStackTrace();
     
      }catch(Exception e){ 
       e.printStackTrace();
        return;
      }    
 }

 

httpParams仅仅是个容器。

  HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
仅仅是将httpParams里的"timeout"值设置为10000ms,并没有作用到实际的调用者相关联。

//该代码才能使其生效。

httpRequest.setParams(httpParams);

 

因遇到此问题,查网上代码一大堆,一试个个无效,自己查看api f分析解决。

希望写代码者发之前先测测,不要误导后人,误人子弟。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值