调用https接口时出现该异常,
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
原因是可以看上图,因为本地没有目标服务器证书导致。解决此方法的两种方案,1.在运行java环境安装对方服务器证书,可使用keytool -printcert -rfc -sslserver ip:port 后保存为cer格式。2.在http建立连接时跳过证书验证
CloseableHttpClient httpClient = getScontractHttpClient();public static CloseableHttpClient getScontractHttpClient() {SSLContext sslContext = null;try {sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustStrategy() {@Overridepublic boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {return true;}}).build();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (KeyManagementException e) {e.printStackTrace();} catch (KeyStoreException e) {e.printStackTrace();}//创建httpClientreturn HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()).build();}