首页 > 解决方案 > RestTemplateBuilder 类型中的requestFactory(Class ) 不适用

问题描述

我在我的项目中使用 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();
    }

}

标签: javarestspring-boot

解决方案


requestFactory方法采用类或 a Supplier<ClientHttpRequestFactory>,因此您需要执行以下任一操作:

.requestFactory(HttpComponentsClientHttpRequestFactory.class)

或者

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

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


推荐阅读