离线时使用SSL加载毕加索图像

问题描述:

我实际上在我的项目中使用毕加索。问题是:似乎没有缓存,所以图像重新加载所有的时间url(https)。离线时使用SSL加载毕加索图像

我想要在磁盘缓存中的图像。 我想要图片缓存时已经下载的图像,而不取决于如果WIFI关闭或不。

我创建了一个类(PicassoTrustAll.class)从HTTPS URL让我的图片:

public class PicassoTrustAll { 

     private static Picasso mInstance = null; 

     private PicassoTrustAll(Context context) { 
      OkHttpClient client = new OkHttpClient(); 
      client.setHostnameVerifier(new HostnameVerifier() { 
       @Override 
       public boolean verify(String s, SSLSession sslSession) { 
        return true; 
       } 
      }); 
      TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { 
       @Override 
       public void checkClientTrusted(
         java.security.cert.X509Certificate[] x509Certificates, 
         String s) throws java.security.cert.CertificateException { 
       } 

       @Override 
       public void checkServerTrusted(
         java.security.cert.X509Certificate[] x509Certificates, 
         String s) throws java.security.cert.CertificateException { 
       } 

       @Override 
       public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
        return new java.security.cert.X509Certificate[] {}; 
       } 
      } }; 
      try { 
       SSLContext sc = SSLContext.getInstance("TLS"); 
       sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
       client.setSslSocketFactory(sc.getSocketFactory()); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      mInstance = new Picasso.Builder(context) 
        .downloader(new OkHttpDownloader(client)) 
        .listener(new Picasso.Listener() { 
         @Override 
         public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) { 
          Log.e("PICASSO", String.valueOf(exception)); 
         } 
        }).build(); 

     } 

     public static Picasso getInstance(Context context) { 
      if (mInstance == null) { 
       new PicassoTrustAll(context); 
      } 
      return mInstance; 
     } 
} 

我用它是这样的:

PicassoTrustAll.getInstance(v.getContext()) 
       .load(image_url) 
       .placeholder(R.drawable.progress_animation) 
       .into(photo); 
+0

可能的重复[如何从缓存中显示图像使用毕加索图像加载器时,无线关闭?](http://*.com/questions/39137700/how-to-display-image-from-cache-using-picasso-image-loader-when-wifi-is-off ) –

+0

没有真正的原因,因为我想在图像已经下载时获取缓存图片,而不是在WIFI关闭时。 –

+0

但我认为这也适用于你的情况。 –

它的工作使用OKHTTP :

Picasso.with(context).load("url") 
         .networkPolicy(NetworkPolicy.OFFLINE) 
         .into(photo, new Callback() { 
          @Override 
          public void onSuccess() { 

          } 

          @Override 
          public void onError() { 
           Picasso.with(context) 
             .load("url") 
           .placeholder(R.mipmap.ic_launcher) 
           .error(R.drawable.user_error) 
             .into(picture); 
          } 
         });