最近在开发项目过程中,使用feign调用https 域名的接口方法。之前在使用httpclient okhttp 这种客户端的时候就比较简单。还没研究过feign的这个该怎么配置。于是翻了下源码,发现如果使用okhttp这个客户端,代码比较简洁。
@Bean
public Feign okHttpClient(){
okhttp3.OkHttpClient.Builder builder = new okhttp3.OkHttpClient.Builder();
OkHttpClient build = new DefaultOkHttpClientFactory(builder).createBuilder(true).build();
return Feign.builder().client(new feign.okhttp.OkHttpClient(build)).build();
}
因为DefaultOkHttpClientFactory中已经为我们实现了绕过证书验证的方法,如图
如果你使用的是httpclient客户端的话,可以像下面这么写
@Bean
public Client skipSSLClient() {
try {
return Optional.of(
new SSLContextBuilder()
.loadTrustMaterial(null, (chain, authType) -> true)
.build()
).map(s ->
new Client.Default(
s.getSocketFactory(),
new NoopHostnameVerifier())
).get();
} catch (Exception e) {
return new Client.Default(null, null);
}
}
OK 到此结束。