《HttpClient官方文档》1.2 HttpClient 接口

1.2. HttpClient 接口

HttpClient 接口表示最基本的HTTP请求执行要约。它不会对请求执行过程加上约束或一些特定的信息,并且保留连接管理,状态管理,认证和处理重定向的细节到各自的实现中。这会使它更方便的使用额外功能来装饰接口,如响应内容缓存。

通常来说, HttpClient接口的实现负责处理特定方面的HTTP协议,比如重定向、身份认证处理、对连接的持久性和维持连接存活长短的决策之类的多个处理程序和策略接口实现的门面。 这使得用户能够有选择性的将一些自定义的,基于特定应用的实现来替换默认的。

ConnectionKeepAliveStrategy keepAliveStrat = new DefaultConnectionKeepAliveStrategy() {

    @Override
    public long getKeepAliveDuration(
            HttpResponse response,
            HttpContext context) {
        long keepAlive = super.getKeepAliveDuration(response, context);
        if (keepAlive == -1) {
            // Keep connections alive 5 seconds if a keep-alive value
            // has not be explicitly set by the server
            keepAlive = 5000;
        }
        return keepAlive;
    }

};
CloseableHttpClient httpclient = HttpClients.custom()
        .setKeepAliveStrategy(keepAliveStrat)
        .build();

1.2.1. HttpClient 线程安全

HttpClient 接口的实现是线程安全的。建议执行多次请求都使用该类的同一个实例。

1.2.2. HttpClient 资源重分配

CloseableHttpClient类的一个实例不再被调用或即将超出连接管理器关联的范围时, 必须通过调用CloseableHttpClient#close()方法来关闭它

CloseableHttpClient httpclient = HttpClients.createDefault();
try {
    <...>
} finally {
    httpclient.close();
}

 转载自 并发编程网 - ifeve.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 HttpClient 中设置 TLS v1.2,您可以使用以下代码示例: ```java import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLParameters; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.conn.ssl.SSLContextBuilder; import org.apache.http.impl.client.HttpClients; public class HttpClientExample { public static void main(String[] args) { try { SSLContext sslContext = SSLContextBuilder.create() .setProtocol("TLSv1.2") .build(); SSLParameters sslParameters = new SSLParameters(); sslParameters.setProtocols(new String[]{"TLSv1.2"}); RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(5000) .setConnectTimeout(5000) .build(); HttpClient httpClient = HttpClients.custom() .setSSLContext(sslContext) .setDefaultSSLParameters(sslParameters) .setDefaultRequestConfig(requestConfig) .build(); // 在此处使用 httpClient 发起请求 } catch (NoSuchAlgorithmException | KeyManagementException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们首先使用 `SSLContextBuilder` 创建一个 `SSLContext` 对象,并设置协议为 "TLSv1.2"。然后,我们创建一个 `SSLParameters` 对象,并将协议设置为 "TLSv1.2"。接下来,我们使用 `RequestConfig` 来设置连接和套接字超时时间。最后,我们使用 `HttpClients.custom()` 创建自定义的 HttpClient,并设置 SSLContext、SSLParameters 和 RequestConfig。您可以在 `httpClient` 上执行您所需的请求操作。 请注意,以上示例使用的是 Apache HttpClient 4.x 版本。如果您正在使用其他版本的 HttpClient,可能需要进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值