不知道为啥,中文互联网对脱胎于httpclient的fluent api介绍太少了,遇到问题也不知道怎么查,只能自己研究,于是遇到问题赶紧记下来
一般情况下我们使用fluent的get方法调用http接口的方式是这样的
Request.get(url) .connectTimeout(Timeout.ofMilliseconds(5000)) .execute() .returnResponse();
但如果是自签名的https接口,会报这样的错
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
常规的教程会让我们下载网站证书安装到本机,但是这样太复杂了,只需要对上述代码稍作改动即可
Request.get(url) .connectTimeout(Timeout.ofMilliseconds(5000)) // 自签名证书无法通过校验,所以信任所有证书 .execute(HttpClients.custom() .setConnectionManager(PoolingHttpClientConnectionManagerBuilder.create() .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create() .setSslContext(SSLContextBuilder.create() .loadTrustMaterial(TrustAllStrategy.INSTANCE) .build()) .setHostnameVerifier(NoopHostnameVerifier.INSTANCE) .build()) .build()) .build()) .returnResponse();
直接信任所有证书即可
标签:get,create,证书,fluent,api,build,https From: https://www.cnblogs.com/whiteEyeborw/p/17789398.html