近期开发安卓程序时,遇到一个问题,当终端的时间是过去的一个时间,在OKhttp请求时报异常,异常信息如下:javax.net.ssl.SSLHandshakeException:com.android.org.bouncycastle.jce.exception.ExtcertPathValidatorException:Could not validate.certificate:null
解决办法如下:
OkHttpClient okHttpClient =new OkHttpClient.Builder().
//很重要,这句话,增加这句话,下面这两句话
hostnameVerifier((hostname, session) -> true).
sslSocketFactory(createSSLSocketFactory()).
build();
SSL验证方法如下
@SuppressLint("TrulyRandom")
public static SSLSocketFactory createSSLSocketFactory() {
SSLSocketFactory sSLSocketFactory = null;
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new TrustAllManager()},
new SecureRandom());
sSLSocketFactory = sc.getSocketFactory();
} catch (Exception

当Android应用遇到SSLHandshakeException,特别是在设备时间错误时,可以使用自定义的TrustManager和HostnameVerifier来绕过证书验证。通过创建TrustAllManager和TrustAllHostnameVerifier,允许所有证书和主机名,从而解决请求问题。但这可能导致安全风险,仅建议用于测试环境。
最低0.47元/天 解锁文章
6080

被折叠的 条评论
为什么被折叠?



