有的时候 我们android https 证书过期 ,或者使用明文等方式去访问服务器 可能会碰到类似的 问题 :
javax.net.ssl.SSLHandshakeException: Chain validation failed
java.security.cert.CertPathValidatorException: Response is unreliable: its validity interval is out-of-date
java.security.cert.CertPathValidatorException: Could not determine revocation status
所以我们 尝试使用一下方式解决 :
1) 忽略证书验证
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
};try {
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) new URL("https://www.baidu.com").openConnection();SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
httpsURLConnection .setSSLSocketFactory(sslContext.getSocketFactory());httpsURLConnection .setHostnameVerifier((hostname, session) -> true);......
} catch (Exception e) {
e.printStackTrace();
}
如果您希望允许整个应用程序使用不安全的 HTTP 连接,可以在应用程序的清单文件(AndroidManifest.xml)中添加以下标记:
<application
android:usesCleartextTraffic="true" ...>
...
</application>
更详细的可以去问 gpt