【问题标题】:HttpComponentsClientHttpConnector is not accepting org.apache.http.impl.nio.client.CloseableHttpAsyncClient for Webclient with Apache Http ClientHttpComponentsClientHttpConnector 不接受带有 Apache Http 客户端的 Webclient 的 org.apache.http.impl.nio.client.CloseableHttpAsyncClient
【发布时间】:2021-05-19 10:52:50
【问题描述】:

我正在尝试在 Tomcat 上运行 Webflux,并尝试使用 Apache Http Client 创建 Sping WebClient。

参考文档指出有内置支持: https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-client-builder-http-components

private ClientHttpConnector getApacheHttpClient(){
    HttpAsyncClientBuilder clientBuilder = HttpAsyncClients.custom();
    clientBuilder.setDefaultRequestConfig(RequestConfig.DEFAULT);
    CloseableHttpAsyncClient client = clientBuilder.build();
    ClientHttpConnector connector = new HttpComponentsClientHttpConnector(client);
    return connector;
}

但是 Springs HttpComponentsClientHttpConnector 不接受 org.apache.http.impl.nio.client.CloseableHttpAsyncClient。它需要 org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient。所以似乎有一个包重命名,我找不到具有所需类的 Maven 依赖项。 有谁知道该类的正确 Maven 依赖关系。或者我怎样才能让它工作?

【问题讨论】:

    标签: spring-webflux apache-httpcomponents spring-webclient apache-httpasyncclient


    【解决方案1】:

    Apache HTTP Client 5 是一个单独的工件。您需要将以下依赖项添加到您的 pom.xml

    <dependency>
        <groupId>org.apache.httpcomponents.client5</groupId>
        <artifactId>httpclient5</artifactId>
        <version>5.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents.core5</groupId>
        <artifactId>httpcore5-reactive</artifactId>
        <version>5.1</version>
    </dependency>
    
    import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
    import org.springframework.http.client.reactive.HttpComponentsClientHttpConnector;
    
    public class ApacheHttp {
        public static void main(String[] args) {
            new HttpComponentsClientHttpConnector(HttpAsyncClients.custom().build())
        }
    }
    

    【讨论】:

    • 不幸的是,这不起作用,并且这些依赖项中不存在所需的类。 HttpComponentsClientHttpConnector 需要包 org.apache.hc.client5.http.impl.async 中的类。上述包中不存在此类。能否提供代码示例?
    猜你喜欢
    • 2021-09-29
    • 2019-01-16
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多