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閱讀 173,532評論 25 708
  • 一、簡介 在泰國舉行的谷歌開發者論壇上,谷歌為我們介紹了一個名叫Glide的圖片加載庫,作者是bumptech。這...
    天天大保建閱讀 7,593評論 2 28
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 首先,我們要理解什么叫原子操作,原子操作可以理解為:在多線程操作同一對象時,在非程序代碼加鎖狀況下,保證被操作對象...
    西門淋雨閱讀 1,937評論 0 2
  • 除非有明確的暗示,否則開場長鏡頭的片子都不輕松。本片開場3分鐘的長鏡頭,女主角連正臉都沒露,明示這不是個愉快的開始...
    衛嘴沖克子閱讀 654評論 0 50