java - requestFactory(Class<? extends ClientHttpRequestFactory>) 类型 RestTemplateBuilder 不适用

标签 java rest spring-boot

我在我的项目中使用 springBootVersion = '2.0.1.RELEASE'。我正在尝试为我编写的 RestClientCertTestConfiguration 类编写相互身份验证代码,如下所示。我在 requestFactory 上收到错误。 RestTemplateBuilder 类型中的方法 requestFactory(Class) 不适用于参数 (HttpComponentsClientHttpRequestFactory) 关于如何解决此问题的任何建议?谢谢

    @Configuration
public class RestClientCertTestConfiguration {

    private String allPassword = "mypassword";

    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) throws Exception {

        SSLContext sslContext = SSLContextBuilder
                .create()
                .loadKeyMaterial(ResourceUtils.getFile("classpath:myCerts.jks"), allPassword.toCharArray(), allPassword.toCharArray())
                .loadTrustMaterial(ResourceUtils.getFile("classpath:myCerts.jks"), allPassword.toCharArray())
                .build();

        HttpClient client = HttpClients.custom()
                .setSSLContext(sslContext)
                .build();

        return builder 
                 //error on this line
                .requestFactory(new HttpComponentsClientHttpRequestFactory(client))
                .build();
    }

}

最佳答案

requestFactory方法采用类或 Supplier<ClientHttpRequestFactory>所以你需要做:

.requestFactory(HttpComponentsClientHttpRequestFactory.class)

.requestFactory(() -> new HttpComponentsClientHttpRequestFactory(client))

大概是后者,因为你想传入 client .

关于java - requestFactory(Class<? extends ClientHttpRequestFactory>) 类型 RestTemplateBuilder 不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53675422/

相关文章:

java - 如何在使用 maven 构建的 spring boot 2 java 应用程序中使用 groovy 解释(带有 spring-aop 注释)?

java - 为什么在配置文件中定义类时需要@Entity注解

java - 如何让jersey中的RESTful资源支持HTTPS

node.js - NodejS-Magento Rest API

node.js - twitter request_token 端点总是返回 "couldn' t 验证你”

java - 方法参数类型不匹配异常 : How to find the controller method

java - 抛出 RuntimeException 会导致事务回滚,但 Spring Boot 应用程序中不会出现异常

java - spring webflux CORS header 被删除

java - NoSuchMethodError : org. hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;

java - Apache POI : Check if a column is empty