在我的项目中,我使用的是springBootVersion =‘2.0.1。我正在尝试编写相互身份验证代码,如下所示,我编写了RestClientCertTestConfiguration类。我在requestFactory上出错了。requestFactory(类)类型中的方法RestTemplateBuilder不适用于参数(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();
}
}
发布于 2018-12-07 20:02:01
requestFactory
方法要么接受类,要么接受Supplier<ClientHttpRequestFactory>
,因此您需要这样做:
.requestFactory(HttpComponentsClientHttpRequestFactory.class)
或
.requestFactory(() -> new HttpComponentsClientHttpRequestFactory(client))
可能是后者,因为您想通过client
。
发布于 2019-03-06 10:49:54
下面的方法在弹簧引导1.x之前工作得很好
.requestFactory(new HttpComponentsClientHttpRequestFactory(client))
但是在较晚版本的spring (如2.x )中,您需要将其更改为-
.requestFactory(HttpComponentsClientHttpRequestFactory.class)
或
.requestFactory(() -> new HttpComponentsClientHttpRequestFactory(client))
https://stackoverflow.com/questions/53675422
复制相似问题