美文网首页Android学习
Glide 加载https的图片

Glide 加载https的图片

作者: android_lyb | 来源:发表于2018-01-11 17:31 被阅读631次

    1、首先在moudle 的build.gradle中添加依赖

    implementation  'com.squareup.okhttp3:okhttp:3.6.0'

    implementation  'com.github.bumptech.glide:glide:4.4.0'

    annotationProcessor  'com.github.bumptech.glide:compiler:4.4.0'

    implementation 'com.github.bumptech.glide:okhttp3-integration:4.0.0-RC1'

    2、新建一个类

    <code>

    /**

    * author:lyb

    * time  :2018/1/11 001116:43

    * desc :

    */

    @GlideModule

    public class MyGlideMoudleextends AppGlideModule {

    @Override

        public boolean isManifestParsingEnabled() {

    return false;

        }

    @Override

        public void registerComponents(Context context, Glide glide, Registry registry) {

    super.registerComponents(context, glide, registry);

            OkHttpClient client = UnsafeOkHttpClient.getUnsafeOkHttpClient();

            registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(client));

        }

    public static class UnsafeOkHttpClient {

    public static OkHttpClientgetUnsafeOkHttpClient() {

    try {

    // Create a trust manager that does not validate certificate chains

                    final TrustManager[] trustAllCerts =new TrustManager[]{

    new X509TrustManager() {

    @Override

                                public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)throws CertificateException {

    }

    @Override

                                public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)throws CertificateException {

    }

    @Override

                                public java.security.cert.X509Certificate[]getAcceptedIssuers() {

    return new java.security.cert.X509Certificate[]{};

                                }

    }

    };

                    // Install the all-trusting trust manager

                    final SSLContext sslContext = SSLContext.getInstance("SSL");

                    sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

                    // Create an ssl socket factory with our all-trusting manager

                    final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

                    OkHttpClient.Builder builder =new OkHttpClient.Builder();

                    builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);

                    builder.hostnameVerifier(new HostnameVerifier() {

    @Override

                        public boolean verify(String hostname, SSLSession session) {

    return true;

                        }

    });

                    builder.connectTimeout(20, TimeUnit.SECONDS);

                    builder.readTimeout(20,TimeUnit.SECONDS);

                    OkHttpClient okHttpClient = builder.build();

                    return okHttpClient;

                }catch (Exception e) {

    throw new RuntimeException(e);

                }

    }

    }

    }

    </code>

    3、这样就完成了Glide对证书的支持:GlideApp.with(this).load("https://").into(img);

    相关文章

      网友评论

        本文标题:Glide 加载https的图片

        本文链接:https://www.haomeiwen.com/subject/zadtoxtx.html