Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApacheHttpComponent5设置SpringHttpComponentClientHttpRequestFactory?_Java_Spring_Apache Httpcomponents - Fatal编程技术网

Java 如何使用ApacheHttpComponent5设置SpringHttpComponentClientHttpRequestFactory?

Java 如何使用ApacheHttpComponent5设置SpringHttpComponentClientHttpRequestFactory?,java,spring,apache-httpcomponents,Java,Spring,Apache Httpcomponents,我正在尝试在春季设置httpClient5。。。我有以下代码: PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create() .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create() .setSslC

我正在尝试在春季设置httpClient5。。。我有以下代码:

PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
                .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create()
                        .setSslContext(SSLContexts.createSystemDefault())
                        .setTlsVersions(TLS.V_1_3, TLS.V_1_2)
                        .build())
                .setDefaultSocketConfig(SocketConfig.custom()
                        .setSoTimeout(Timeout.ofSeconds(5))
                        .build())
                .setPoolConcurrencyPolicy(PoolConcurrencyPolicy.STRICT)
                .setConnPoolPolicy(PoolReusePolicy.LIFO)
                .setConnectionTimeToLive(TimeValue.ofMinutes(1L))
                .build();

        CloseableHttpClient client = HttpClients.custom()
                .setConnectionManager(connectionManager)
                .setDefaultRequestConfig(RequestConfig.custom()
                        .setConnectTimeout(Timeout.ofSeconds(5))
                        .setResponseTimeout(Timeout.ofSeconds(5))
                        .setCookieSpec(StandardCookieSpec.STRICT)
                        .build())
                .build();

        CookieStore cookieStore = new BasicCookieStore();

        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();

        HttpClientContext clientContext = HttpClientContext.create();
        clientContext.setCookieStore(cookieStore);
        clientContext.setCredentialsProvider(credentialsProvider);
        clientContext.setRequestConfig(RequestConfig.custom()
                .setConnectTimeout(Timeout.ofSeconds(5000))
                .setResponseTimeout(Timeout.ofSeconds(5000))
                .build());



        // connect Spring httpComponent (client-side) with Apache httpClient
        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
        httpRequestFactory.setReadTimeout(60000);
        httpRequestFactory.setConnectTimeout(60000);
        httpRequestFactory.setHttpClient(client);
ClosableHttpClient类实现了与setHttpClient(客户端)不兼容的接口org.apache.hc.client5.http.classic.HttpClient;这将导致运行时错误:

java.lang.ClassCastException: class org.apache.hc.client5.http.impl.classic.InternalHttpClient cannot be cast to class org.apache.http.client.HttpClient (org.apache.hc.client5.http.impl.classic.InternalHttpClient and org.apache.http.client.HttpClient are in unnamed module of loader 'app')

我正在使用Spring5.0和HttpComponents-client-5。如何将HttpClient 4.X转换为HttpClient 5?

Apache HttpClient 4.5和HttpClient 5.0 classic非常相似,但完全不兼容API


在Spring提供基于ApacheHttpClient 5.x的
RequestFactory
实现之前,无法将HttpClient 5.x与Spring集成。

我刚刚尝试过这样做,我相信到2021年6月,情况仍然如此。