http连接池 java_HttpClient以及连接池的使用

本文档介绍了如何使用Java的HttpClient以及配置连接池。详细讲解了创建HttpClient对象、设置请求参数、发送请求、获取响应内容的过程,并探讨了为何使用HTTP连接池、如何创建连接池以及使用过程中的注意事项。
摘要由CSDN通过智能技术生成

一、开始使用httpclient

本文档需要使用的依赖有如下几个:

org.apache.httpcomponents

httpclient

4.5.10

org.apache.httpcomponents

httpmime

4.5.10

org.apache.httpcomponents

httpcore

4.4.11

1、创建HttpClient对象。

创建httpclient对象的方式有两种,

第一种是使用默认配置创建:

CloseableHttpClient client = HttpClients.createDefault();

第二种是使用HttpClients.custom()定制:

HttpClients.custom().setDefaultRequestConfig(RequestConfig)

这其中RequestConfig的设计方式可以学习一下。RequestConfig只有一个默认访问修饰符的构造函,这就意味着我们在使用这个类的时候不能之间构建示例;RequestConfig有很多私有属性,这些属性没有get/set方法,所以,即便是我们拿到了RequestConfig类的实例,也不能去修改其中的属性值。那么RequestConfig是如何构造实例并且为属性赋值的呢?RequestConfig在实例化的时候会利用其公共内部类Builder。使用方式为RequestConfig.custom().setXXX().builder()。调用custom方法返回一个Builder类实例,改类里有设置RequestConfig同名属性的各种方法,设置完毕后调用builder方法构造一个新的RequestConfig实例。从这个过程中可以看出来,RequestConfig对象的属性是不可变的。

有几个参数我们自己必须设置一下:

(1)connectionRequestTimeout:从连接池中获取连接的超时时间,超过该时间未拿到可用连接,会抛出:

ConnectionPoolTimeoutException: Timeout waiting for connection from pool

(2)connectTimeout:连接上服务器(握手成功)的时间,超出该时间抛出connect timeout

(3)socketTimeout:服务器返回数据(response)的时间,超过该时间抛出read timeout

以上3个超时相关的参数如果未配置,默认为-1,意味着无限大,就是一直阻塞等待。

2、创建请求方法的实例

创建请求方法的实例并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象:

Htt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值