httpclient RequestConfig类

本文介绍了Apache HttpClient中的RequestConfig类,该类用于配置网络环境参数,包括设置Cookie匹配策略、认证方案、超时时间等。文章提供了创建RequestConfig实例的具体步骤,并展示了如何将配置应用于HttpGet请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RequestConfig类解析

这个类位于org.apache.he.http.client.config包下,主要用于获取和配置一些外部的网络环境,它下面有一个嵌套类RequestConfig.Builder
顾名思意,它是用来配置网络环境的。
使用方法:
*) 先用ReuqestConfig的静态方法custom()获取RequestConfig.Builder"配置器"
*) 然后用其下的各种方法配置网络环境或者已经有配置好的RequestConfig对象,将对象拷贝过来返回'配置器'而重新进行网络环境配置
*) 最后调用配置器的builder()方法返回RequestConfig对象

RequestConfig实例

RequestConfig defaultRequestConfig = RequestConfig.custom()
            .setCookieSpec(CookieSpecs.BEST_MATCH)
            .setExpectContinueEnabled(true)
            .setStableConnectionCheckException(true)
            .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NLM,AuthSchemes.DIGEST))
            .setProxyPreferredAuthSchemes(Arrays.asList(AuchSchemes.BASIC))
            .builder();
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig)
                     .setSocketTimeout(5000)
                     .setConnectTimeout(5000)
                     .setConnectionTimeout(5000)
                     .setProxy(new HttpHost("127.0.0.1",8090))
                     .builder();

配置好请求之后,接下来就是将配置好的请求信息附加到http请求中
HttpGet httpget = new HttpGet("http://www.baidu.com");
httpget.setConfig(RequestConfig);

转载于:https://www.cnblogs.com/ssgao/p/8829194.html

### HttpClientUtils 工具中的连接池使用与配置 #### 依赖引入 为了使用 `HttpClient` 的连接池功能,首先需要在项目中添加相应的 Maven 依赖: ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> ``` #### 创建连接池管理器 创建一个自定义的 `PoolingHttpClientConnectionManager` 来管理 HTTP 连接池。这可以通过设置最大总连接数和每路由的最大连接数来优化性能。 ```java import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; public class HttpsClientUtils { private static PoolingHttpClientConnectionManager connMgr; static { // 初始化连接池管理器 connMgr = new PoolingHttpClientConnectionManager(); // 设置最大连接总数 connMgr.setMaxTotal(200); // 设置每个路由基础的连接 connMgr.setDefaultMaxPerRoute(20); } } ``` #### 配置超时参数 除了基本的连接池配置外,还可以通过 `RequestConfig` 对象设置请求超时和其他网络参数。 ```java import org.apache.http.client.config.RequestConfig; public class HttpsClientUtils { public static RequestConfig requestConfig() { return RequestConfig.custom() .setConnectTimeout(5000) // 连接超时时间 .setSocketTimeout(5000) // 请求获取数据的超时时间 .setConnectionRequestTimeout(5000) // 获取连接的等待时间 .build(); } } ``` #### 构建 CloseableHttpClient 实例 最后,在构建 `CloseableHttpClient` 实例时传入上述配置好的连接池管理和请求配置对象。 ```java import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class HttpsClientUtils { public static CloseableHttpClient getHttpClient() { return HttpClients.custom() .setConnectionManager(connMgr) .setDefaultRequestConfig(requestConfig()) .build(); } } ``` 这样就完成了一个带有连接池支持的 `HttpClientUtils` 工具的设计[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值