You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot 3.0中HttpComponentsClientHttpRequestFactory的替代类是什么?

SpringBoot 3.0.x 替代HttpComponentsClientHttpRequestFactory的方案

在SpringBoot 3.0.x(对应Spring Framework 6)中,原org.springframework.http.client.HttpComponentsClientHttpRequestFactory类仍然可用,但需要满足两个前提:

  1. 手动引入Apache HttpClient 5.x的SpringBoot starter依赖,因为SpringBoot3默认不再自动包含该依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-httpclient</artifactId>
</dependency>
  1. 适配Apache HttpClient 5.x的API变更,原4.x版本的部分类和方法已调整。

调整后的禁用SSL证书验证代码如下:

import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager;
import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
import org.apache.hc.core5.http.config.Registry;
import org.apache.hc.core5.http.config.RegistryBuilder;
import org.apache.hc.core5.ssl.SSLContexts;
import org.apache.hc.core5.ssl.TrustStrategy;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;

import javax.net.ssl.KeyManagementException;
import javax.net.ssl.KeyStoreException;
import javax.net.ssl.NoSuchAlgorithmException;

public HttpComponentsClientHttpRequestFactory getRequestFactory() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
    // 信任所有证书的策略
    TrustStrategy acceptingTrustStrategy = (cert, authType) -> true;
    javax.net.ssl.SSLContext sslContext = SSLContexts.custom()
            .loadTrustMaterial(null, acceptingTrustStrategy)
            .build();

    // 创建SSL连接套接字工厂,忽略主机名验证
    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
            sslContext,
            NoopHostnameVerifier.INSTANCE
    );

    // 注册HTTP和HTTPS的套接字工厂
    Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
            .register("https", sslsf)
            .register("http", PlainConnectionSocketFactory.getSocketFactory())
            .build();

    // 创建连接管理器
    BasicHttpClientConnectionManager connectionManager = new BasicHttpClientConnectionManager(socketFactoryRegistry);

    // 构建HttpClient实例
    CloseableHttpClient httpClient = HttpClients.custom()
            .setSSLSocketFactory(sslsf)
            .setConnectionManager(connectionManager)
            .build();

    // 返回请求工厂
    return new HttpComponentsClientHttpRequestFactory(httpClient);
}

核心API变更点:

  • Apache HttpClient的包路径从org.apache.http升级为org.apache.hc.client5.http、org.apache.hc.core5.http等(对应5.x版本)
  • PlainConnectionSocketFactory需通过getSocketFactory()静态方法获取实例,不再直接实例化
  • SSL相关工具类的导入路径同步调整

内容的提问来源于stack exchange,提问作者Andrey Rogov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:22:31