前言
Httpclient 3.x和Httpclient 4.x如何设置超时时间timeout呢?Httpclient访问网站默认超时时间是60s,如果不设置超时时间,它会一直等待这个时间,才会断开连接,网络不佳的情况下,等待很久,是很影响程序的执行效率的,设置超时时间,可以提高Httpclient的运行效率,那么如何设置超时时间呢?
Httpclient 3.X和Httpclient 4.X的版本设置超时时间的方式各不一样,具体方法如下;
Httpclient 3.X 设置超时时间的方式:
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(40000); httpClient.getHttpConnectionManager().getParams().setSoTimeout(40000);
Httpclient 4.X设置超时时间的方式:
//一般来讲,设置这两个超时时间就可以了 httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 12000); httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 12000);
Httpclient使用例子:
给大家分享一个设置超时时间访问限制的网站,希望有所帮助!
//请求百度判断代理IP是否有效的代码
public static boolean isIpUsefull(String ip,int port, DefaultHttpClient httpClient
, String webAgent) {
boolean ret = false ;
System.out.println(ip+":"+port) ;
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 12000);
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 12000);
if(ip==null || ip.equals("0")){
return false ;
}
HttpHost proxy = new HttpHost(ip,port);
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
int state = 0 ;
try {
Thread.sleep(3000) ;
HttpGet g1 = new HttpGet("http://www.baidu.com") ;
g1.setHeader("Accept", "text/html, application/xhtml+xml, */*") ;
g1.setHeader("User-Agent", webAgent) ;
HttpResponse response2 = httpClient.execute(g1) ;
//httpClient.executeMethod(g1) ;
if(response2.getStatusLine().getStatusCode()==200){
state = 1 ;
}else if(response2.getStatusLine().getStatusCode()==302){
state = 1 ;
}
}catch(Exception e){
System.out.println(e.toString());
}
if(state == 1){
ret = true ;
}else{
ret = false ;
}
return ret ;
}
注明: 代码中的网站均为例子,仅供参考,不一定真实有效额,请勿全部Copy。
【蝴蝶效应-虎】