imageloader 的 java.security.cert.CertPathValidatorException

本文提供了一种解决使用ImageLoader时遇到的SSL证书验证错误(java.security.cert.CertPathValidatorException)的方法。通过修改BaseImageDownloader.java文件中的createConnection方法,并引入FakeX509TrustManager类来信任所有SSL证书,从而绕过证书验证问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用imageloader 发现ssl问题 (java.security.cert.CertPathValidatorException)

网上找了个方法,亲测通过,如下:

universalimageloader/core/download/BaseImageDownloader.java文件中

protected HttpURLConnection createConnection(String url, Object extra)
throws IOException {
FakeX509TrustManager.allowAllSSL();// 允许所有ssl证书


String encodedUrl = Uri.encode(url, ALLOWED_URI_CHARS);
HttpURLConnection conn = (HttpURLConnection) new URL(encodedUrl)
.openConnection();
conn.setConnectTimeout(connectTimeout);
conn.setReadTimeout(readTimeout);
return conn;
}


public static class FakeX509TrustManager implements X509TrustManager {
private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[0];


public void checkClientTrusted(X509Certificate[] x509Certificates,
String s) throws CertificateException {
}


public void checkServerTrusted(X509Certificate[] x509Certificates,
String s) throws CertificateException {
}


public X509Certificate[] getAcceptedIssuers() {
return _AcceptedIssuers;
}


public static void allowAllSSL() {
HttpsURLConnection
.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
SSLContext context = null;
if (trustManagers == null) {
trustManagers = new TrustManager[] { new FakeX509TrustManager() };
}
try {
context = SSLContext.getInstance("TLS");
context.init(null, trustManagers, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
HttpsURLConnection.setDefaultSSLSocketFactory(context
.getSocketFactory());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值