2017-03-21 1 views
1

Je travaille sur android et en utilisant 'backendless' comme mbass. J'ai téléchargé une image dans leur stockage de fichiers et je reçois une URL publique pour la récupération d'image. Je récupère l'image avec succès par simple 'HttpURLConnection' mais quand j'utilise glide, il reste toujours dans 'error' au lieu de récupérer l'image. et glide fonctionne sur d'autres URL que j'ai copiées de Google et cela fonctionne très bien. mais j'ai donné l'URL backendless cela ne fonctionne pas.Glide ne montre pas les images de l'URL backendless

Glide.with(getContext()) 
        .load("https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage.png") 
        .placeholder(R.drawable.ic_video_call_white_36dp) 
        .error(R.drawable.loginbackground) 
        .into(ImageView); 

et la version glisse est: 3.7.0

ici est mon URL backendless: https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage.png

+0

Je l'ai essayé sur mon côté et il semble fonctionner très bien pour moi avec Glide. Cela prend quelques secondes mais ça marche. Vérifiez encore une fois. – Sac

+0

'.load (" https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage ")'. N'avez-vous pas oublié un '.png' là? – greenapps

+0

Désolé, j'ai oublié. Je l'ai ajouté mais ça ne marche pas. –

Répondre

0

Je suis l'image dans mon appareil à l'aide Glide. S'il vous plaît trouver l'image ci-jointe.

(version: compilation 'com.github.bumptech.glide: vol plané: 3.6.1')

ImageView imageView = (ImageView) findViewById(R.id.imageView); 
    Glide.with(this) 
      .load("https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage.png") 
      .placeholder(new ColorDrawable(ContextCompat.getColor(MainActivity.this, R.color.placeholder_gray))) 
      .error(new ColorDrawable(ContextCompat.getColor(MainActivity.this, R.color.placeholder_gray))) 
      .into(imageView); 

enter image description here

+0

Je travaille en fragment, fais cet effet? plus voici mon code, 'Glide.with (getContext()) .load (" https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage ") .placeholder (R.drawable.ic_video_call_white_36dp) .error (R.drawable.loginbackground) .into (ImageView); ' –

+0

ceci est ma version de glisse, compilez « com.github.bumptech.glide: vol plané: 3,7. 0 ' –

+0

Pls publiez votre erreur –

0

Peut-être qu'il est à cause de l'appui de Https.

gradle

compile 'com.squareup.okhttp3:okhttp:3.3.1' 
compile 'com.github.bumptech.glide:glide:3.7.0' 
compile 'com.github.bumptech.glide:okhttp3-integration:[email protected]' 

HttpsUtils

public class HttpsUtils{ 
public static SSLSocketFactory getSslSocketFactory(InputStream[] certificates, InputStream bksFile, String password){ 
    try{ 
     TrustManager[] trustManagers = prepareTrustManager(certificates); 
     KeyManager[] keyManagers = prepareKeyManager(bksFile, password); 
     SSLContext sslContext = SSLContext.getInstance("TLS"); 
     TrustManager trustManager = null; 
     if (trustManagers != null){ 
      trustManager = new MyTrustManager(chooseTrustManager(trustManagers)); 
     } else{ 
      trustManager = new UnSafeTrustManager(); 
     } 
     sslContext.init(keyManagers, new TrustManager[]{trustManager}, new SecureRandom()); 
     return sslContext.getSocketFactory(); 
    } catch (NoSuchAlgorithmException e){ 
     throw new AssertionError(e); 
    } catch (KeyManagementException e){ 
     throw new AssertionError(e); 
    } catch (KeyStoreException e){ 
     throw new AssertionError(e); 
    } 
} 

private class UnSafeHostnameVerifier implements HostnameVerifier{ 
    @Override 
    public boolean verify(String hostname, SSLSession session){ 
     return true; 
    } 
} 

private static class UnSafeTrustManager implements X509TrustManager{ 
    @Override 
    public void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException{} 

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

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

private static TrustManager[] prepareTrustManager(InputStream... certificates){ 
    if (certificates == null || certificates.length <= 0) return null; 
    try{ 
     CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); 
     KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
     keyStore.load(null); 
     int index = 0; 
     for (InputStream certificate : certificates){ 
      String certificateAlias = Integer.toString(index++); 
      keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(certificate)); 
      try{ 
       if (certificate != null) 
        certificate.close(); 
      } catch (IOException e){ 
      } 
     } 
     TrustManagerFactory trustManagerFactory = null; 
     trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); 
     trustManagerFactory.init(keyStore); 
     TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); 
     return trustManagers; 
    } catch (NoSuchAlgorithmException e){ 
     e.printStackTrace(); 
    } catch (CertificateException e){ 
     e.printStackTrace(); 
    } catch (KeyStoreException e){ 
     e.printStackTrace(); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
    return null; 

} 

private static KeyManager[] prepareKeyManager(InputStream bksFile, String password){ 
    try{ 
     if (bksFile == null || password == null) return null; 
     KeyStore clientKeyStore = KeyStore.getInstance("BKS"); 
     clientKeyStore.load(bksFile, password.toCharArray()); 
     KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
     keyManagerFactory.init(clientKeyStore, password.toCharArray()); 
     return keyManagerFactory.getKeyManagers(); 
    } catch (KeyStoreException e){ 
     e.printStackTrace(); 
    } catch (NoSuchAlgorithmException e){ 
     e.printStackTrace(); 
    } catch (UnrecoverableKeyException e){ 
     e.printStackTrace(); 
    } catch (CertificateException e){ 
     e.printStackTrace(); 
    } catch (IOException e){ 
     e.printStackTrace(); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
    return null; 
} 

private static X509TrustManager chooseTrustManager(TrustManager[] trustManagers){ 
    for (TrustManager trustManager : trustManagers){ 
     if (trustManager instanceof X509TrustManager){ 
      return (X509TrustManager) trustManager; 
     } 
    } 
    return null; 
} 

private static class MyTrustManager implements X509TrustManager{ 
    private X509TrustManager defaultTrustManager; 
    private X509TrustManager localTrustManager; 

    public MyTrustManager(X509TrustManager localTrustManager) throws NoSuchAlgorithmException, KeyStoreException{ 
     TrustManagerFactory var4 = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); 
     var4.init((KeyStore) null); 
     defaultTrustManager = chooseTrustManager(var4.getTrustManagers()); 
     this.localTrustManager = localTrustManager; 
    } 

    @Override 
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException{} 

    @Override 
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException{ 
     try{ 
      defaultTrustManager.checkServerTrusted(chain, authType); 
     } catch (CertificateException ce){ 
      localTrustManager.checkServerTrusted(chain, authType); 
     } 
    } 

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

}

RetrofitUtils

public class RetrofitUtils { 
public static OkHttpClient getOkHttpClient(InputStream... certificates) 
{ 
    SSLSocketFactory sslSocketFactory = HttpsUtils.getSslSocketFactory(certificates, null, null); 
    OkHttpClient.Builder builder = new OkHttpClient().newBuilder(); 
    builder = builder.sslSocketFactory(sslSocketFactory); 
    builder.hostnameVerifier(new HostnameVerifier() { 
     @Override 
     public boolean verify(String hostname, SSLSession session) 
     { 
      return true; 
     } 
    }); 
    return builder.build(); 
} 

} application

Glide.get(this).register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(RetrofitUtils.getOkHttpClient())); 

Enfin

 Glide.with(this).load("https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage.png").centerCrop().into(iv_icon);