首页 > 代码库 > HttpClient 操作总结
HttpClient 操作总结
1、HttpClient4.3和之前版本设置超时(set timeout)区别:
参考:http://my.oschina.net/u/577453/blog/173724
解析:如果不设置超时的话,可能会使得get的时间很久,造成程序假死(挂着不动不结束)
最近用到了HttpClient写微博爬虫,发现创建一个HttpClient对象吧,每一个版本的都不一样,
3.X是这样的
1 | HttpClient httpClient= new DefaultHttpClient(); |
4.3是这样的
1 | CloseableHttpClient httpClient = HttpClients.createDefault(); |
这些改动还不是很大,但是超时设置,HttpClient有三种超时设置,就改变不少了,讲一些最简单最易用的超时设置方法。
这是个3.X的超时设置方法
1 2 3 | HttpClient client = new HttpClient(); client.setConnectionTimeout( 30000 ); client.setTimeout( 30000 ); |
1 2 | HttpClient httpClient= new HttpClient(); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout( 5000 ); |
4.X版本的超时设置(4.3后已过时)
1 2 3 | HttpClient httpClient= new DefaultHttpClient(); httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000 ); //连接时间 httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000 ); //数据传输时间 |
4.3版本超时设置
1 2 3 4 5 | 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); //执行请求 |
更重要的是,4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时),亲身泪奔经历过啊!。
HttpClient 操作总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。