前言
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。