HttpClient 版本变化 转载

转载地址: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);//执行请求

BTW,4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时)。

时间: 2024-12-14 04:20:36

HttpClient 版本变化 转载的相关文章

.NET/C# 各版本变化及衍生知识点

还是新开一篇吧,因为不光要记录各版本变化,还想把相关知识点衍生出来扩展一下,一天写不完就多几天,这里面知识点非常多. C# 1.0,对应.NET 1.0,对应VS 2003,新特性:事件.委托. C# 2.0,对应.NET 2.0,对应VS 2005,新特性:泛型.匿名.迭代.可空.委托(协变/逆变).部份类.形态类.属性访问控制 C# 3.0,对应.NET 3.0,对应VS 2008,新特性:类型推断.隐式类型的部变量.对象集合初始化.自动实现属性.匿名类型.扩展方法.查询表达式.Lambda

babel版本变化 - 简单理解

babel版本变化 现在大部分使用babel的项目都是用的babel7.x了,但是还是需要去了解一下babel每个版本的一个重大变化,本篇主要是简单来记录下我了解的babel几个版本的重大变化 babel5.x 我看官网babel5已经没有了,,,但是在我了解的过程中,有好多博客都说有babel5,,,差不多就是说babel5就是一个全家桶,类似于vue-cli那样的东西,包括各种包和插件,babel5大概就是让你通过一次安装,尽可能的可以达到所有你想要的东西. babel6.x babel5升

Oracle 最新版本变化 转帖

版本更迭 http://www.sohu.com/a/163264045_505827 Oracle Database的下一个版本将是 Oracle 18. 目的 为了更快的.通过每年的版本发布将新特性带给用户,小步快跑.灰度发布,可以尽量通过小的变更,降低用户对于版本升级的恐惧感. 由此又可以将用户更紧密的团结在Oracle数据库产品周围,通过持续不断的升级来保持用户和Oracle的互动. 在MOS上『文档号 742060.1』,这一计划已经更新. 在以下发布计划中可以看到,在2018年将发布

httpclient版本冲突,maven工程中传递依赖导致的版本冲突

A服务发送http请求调用B服务时,出现异常信息:2020-03-23 10:15:14.001:WARN:oejs.ServletHandler:qtp760563749-27: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/util/Argsat

Appium原理及版本变化细节

Appium原理小结 Api接口调用selenium的接口,Android底层用android的instrumentation(API2.3+ 通过绑定另外一个独立的selendroid项目来实现的).uiautomator接口(API4.2+),iOS底层用ios的uiautomation接口. Client/ServerArchitecture Appium server是用Node.js写的,安装node.js可以直接用npm命令或dmg,server端功能:监听一个端口,接收client

nginx各版本变化说明

from: http://nginx.org/en/CHANGES 使用nginx cache,想要配置cache数据自动清理时间,发现一个参数 clean_time ,但发现很早这个参数就从稳定版本中 清除了.目前来看,只能用purge指令控制. 以下是 nginx 各个版本的 changes 说明. Changes with nginx 1.7.7 28 Oct 2014 *) Change: now nginx takes into account the "Vary" head

Windows内核版本变化(Windows 10 Build 9888 内核版本是 10.0)

Windows Vista 内核版本是 6.0 Windows 7 内核版本是 6.1 Windows 8 内核版本是 6.2 Windows 8.1 内核版本是 6.3 Windows 10 Build 9841.9860 和 9879 内核版本是 6.4 Windows 10 Build 9888 内核版本是 10.0 通常内核版本的改变意味着较大的底层更新,Windows 10 内核将比 Windows 7 有更彻底的改变,内核版本也可能是在和 Windows 10 命名保持一致,突出和过

docker 版本变化及说明

Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式. 企业版自然会提供一些额外的服务,当然肯定也是收费的.企业版说明https://blog.docker.com/2017/03/docker-enterprise-edition/ 社区版分为stable和edge两种发布方式. stable版本是季度发布方式,比如17.03, 17.06, 17.09 edge版本是月份发布方

Docker版本变化和新版安装

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施.容器.插件等. 社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09:每个月份更新edge版本,如17.09,17.10. 官方文档:https://docs.docker.com/engine/installation/linux/docker-ce/c