HttpClient超时设置_demo

参考:http://blog.csdn.net/hi_kevin/article/details/32316171

有时使用httpclient的时候,需要等待N长时间,可能此时你决定放弃或者重试。实现上非常简单添加一个参数即可。

//这里的超时单位是毫秒。这里的http.socket.timeout相当于SO_TIMEOUT  
httpClient.getParams().setIntParameter("http.socket.timeout",3000); 



HttpConnectionManagerParams managerParams   
  = httpClient.getHttpConnectionManager().getParams();  
// 设置连接超时时间(单位毫秒)  
 managerParams.setConnectionTimeout(30000);  
// 设置读数据超时时间(单位毫秒)  
 managerParams.setSoTimeout(120000); 


1,设置get方法请求超时为 5 秒
GetMethod getMethod= new  GetMethod(url);     
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,5000 );


2,设置 Http 连接超时为5秒
HttpClient httpClient= new  HttpClient();    
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000 );   

设置连接超时和请求超时,这两个超时的意义不同,需要分别设置。

参考自:http://blog.csdn.net/xinying0424/article/details/36006383

HttpClient 4 和 HttpClient 3 设置超时

HttpClient 4:
连接超时:

连接超时
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,60000);
// 或者
HttpConnectionParams.setConnectionTimeout(params,6000);
读取超时:


httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000);
// 或者
HttpConnectionParams.setSoTimeout(params,60000);
HttpClient 3:
连接超时:


httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60000);
读取超时:

?
httpClient.getHttpConnectionManager().getParams().setSoTimeout(60000);


     ok,以后再写httpClient这两个超时时间一定要加上,不加就很可能悲剧的了

版本vs
参考自:http://my.oschina.net/u/577453/blog/173724

最近用到了HttpClient写爬虫,可能我有新版本强迫症,老是喜欢用新版本的东西(虽说新版本不一定好用),然后就用了HttpClient 4.3。HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼。就好比创建一个HttpClient对象吧,每一个版本的都不一样,

3.X是这样的

HttpClient httpClient=new DefaultHttpClient();

4.3是这样的
CloseableHttpClient httpClient = HttpClients.createDefault();
当然,上面这些变化只不过是一些小变化,大家看看API大家就都会了。
我要讲的是超时设置,HttpClient有三种超时设置,最近比较忙,没时间具体归纳总结,以后再补上,我这里就讲一些最简单最易用的超时设置方法。

这是个3.X的超时设置方法

HttpClient client = new HttpClient();
client.setConnectionTimeout(30000);  
client.setTimeout(30000);

HttpClient httpClient= new HttpClient();  
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

4.X版本的超时设置(4.3后已过时)
HttpClient httpClient=new DefaultHttpClient();
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//连接时间
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,2000);//数据传输时间
4.3版本超时设置
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet=new HttpGet("http://www.baidu.com");//HTTP Get请求(POST雷同)
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//设置请求和传输超时时间
httpGet.setConfig(requestConfig);
httpClient.execute(httpGet);//执行请求

评论:connection超时在linux是正常的,已经用你的代码重新测试了。又有个新问题,在windows平台下,如果请求的域名不存在,例如http://www.test2.com,代码立刻就会给返回,这个时候connection超时是无用的;在linux中是成功的,默认重连3次,connectionTimeout之后给异常返回。(待验证)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值