Glide4.0 加载 Https 图片

最近在项目中遇到加载https图片,单纯的glide遇到了加载不出来的问题,下面讲一下解决过程,以便可以帮助到大家 (0.0)

  1. 注入依赖
compile "com.github.bumptech.glide:okhttp3-integration:4.0.0-RC1"
  1. 拷贝相关类到自己的工程目录下


    包目录结构图
  2. 修改相关代码

  • OkHttpGlideModule
public class OkHttpGlideModule implements GlideModule {
  @Override
  public void applyOptions(Context context, GlideBuilder builder) {
    // Do nothing.
  }
  @Override
  public void registerComponents(Context context, Glide glide, Registry registry) {
    X509TrustManager xtm = new X509TrustManager() {
      @Override
      public void checkClientTrusted(X509Certificate[] chain, String authType) {
      }

      @Override
      public void checkServerTrusted(X509Certificate[] chain, String authType) {
      }

      @Override
      public X509Certificate[] getAcceptedIssuers() {
        X509Certificate[] x509Certificates = new X509Certificate[0];
        return x509Certificates;
      }
    };

    SSLContext sslContext = null;
    try {
      sslContext = SSLContext.getInstance("SSL");

      sslContext.init(null, new TrustManager[]{xtm}, new SecureRandom());

    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (KeyManagementException e) {
      e.printStackTrace();
    }
    HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
      @Override
      public boolean verify(String hostname, SSLSession session) {
        return true;
      }
    };

    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.sslSocketFactory(sslContext.getSocketFactory());
    builder.hostnameVerifier(DO_NOT_VERIFY);
    builder.hostnameVerifier(new HostnameVerifier() {
      @Override
      public boolean verify(String hostname, SSLSession session) {
        return true;
      }
    });

    builder.connectTimeout(20, TimeUnit.SECONDS);
    builder.readTimeout(20,TimeUnit.SECONDS);

    registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build()));
  }
}
  • OkHttpLibraryGlideModule
@GlideModule
public final class OkHttpLibraryGlideModule extends LibraryGlideModule {
  @Override
  public void registerComponents(Context context, Glide glide, Registry registry) {
    registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory());
  }
}
  1. 配置AndroidManifest.xml
 <meta-data
            android:name="com.***.***.OkHttpGlideModule"
            android:value="GlideModule"/>
  1. 移除依赖
// compile "com.github.bumptech.glide:okhttp3-integration:4.0.0-RC1"

到这一步你就可以成功加载https 的图片了

参考文章
Glide加载https图片
Glide4.0加载https图片

有不同方法欢迎留言

每星期至少一篇跟新,感兴趣可以关注。

一起学习,一起进步。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,149评论 25 709
  • 一、简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bumptech。这...
    天天大保建阅读 12,199评论 2 28
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 首先,我们要理解什么叫原子操作,原子操作可以理解为:在多线程操作同一对象时,在非程序代码加锁状况下,保证被操作对象...
    西门淋雨阅读 5,894评论 0 2
  • 除非有明确的暗示,否则开场长镜头的片子都不轻松。本片开场3分钟的长镜头,女主角连正脸都没露,明示这不是个愉快的开始...
    卫嘴冲克子阅读 3,805评论 0 50