最近服务器从http改为了https,先是连接地址改了,加入或者忽略证书
但是发现使用的glide不显示图片了,这就不能忍了
但是试了好多办法都不行
最多的就是
Glide.get(application).registry(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(OkHttpClient));
但是我的方法报错
Glide.get(application).getRegistry().register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build()));
不知道是不是我的Glide版本不同,还是如何,就是和网上帖子上的代码不一样,使用不了(很是苦恼)
后来在网上找了一个方法
/**
* 忽略https的证书校验
* 避免Glide加载https图片报错:
* javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
*/
public static void handleSSLHandshake() {
try {
TrustManager[] trustAllCerts =new TrustManager[]{new X509TrustManager() {
public X509Certificate[]getAcceptedIssuers() {
return new X509Certificate[0];
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}};
SSLContext sc = SSLContext.getInstance("TLS");
// trustAllCerts信任所有的证书
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
}catch (Exception ignored) {
}
}
在Application中初始化
一个项目可以显示图片, 一个项目显示不了图片 -->是什么原因一直没有搞懂
最后,我找到解决办法了,过程就不说了,很是辛苦啊(我使用的是OKGO)
初始化okhttp时加入以下代码
Glide.get(application).getRegistry().replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build()));
把register换成replace方法,这样,图片就显示了!