关于Glide配置https图片不显示的问题

最近服务器从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()));

一个是registry一个是getRegistry()这个应该没有什么问题

但是不知道是不是我的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方法,这样,图片就显示了。

猜你喜欢

转载自blog.csdn.net/u011719228/article/details/89885880
今日推荐