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分析解决。
希望写代码者发之前先测测,不要误导后人,误人子弟。