访问https时报错:sun.security.validator.ValidatorException:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget
解决办法:
1.建立以下工具类,引用信息也标明了,需要注意,引用错了则不好用
import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import .ssl.SSLContext;import .ssl.TrustManager;import .ssl.X509TrustManager;import org.apache.http.client.HttpClient;import org.apache.http.conn.ssl.NoopHostnameVerifier;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;/*** @Description 忽略证书验证* @Author sky* @Date /10/21 14:00*/public class CertificateValidationIgnored {public static HttpClient wrapClient() {try {SSLContext ctx = SSLContext.getInstance("TLS");X509TrustManager tm = new X509TrustManager() {public X509Certificate[] getAcceptedIssuers() {return null;}public void checkClientTrusted(X509Certificate[] arg0,String arg1) throws CertificateException {}public void checkServerTrusted(X509Certificate[] arg0,String arg1) throws CertificateException {}};ctx.init(null, new TrustManager[] { tm }, null);SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE);CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(ssf).build();return httpclient;} catch (Exception e) {return HttpClients.createDefault();}}public static void main(String[] args) {}}
2.使用工具类,之后就是正常流程了
CertificateValidationIgnored skipHttpsUtil=new CertificateValidationIgnored();HttpClient httpClient = (CloseableHttpClient)skipHttpsUtil.wrapClient();