2017-03-21 8 views
1

Ich arbeite auf Android und mit 'Backendless' als mbass. Ich habe ein Bild in ihren Dateispeicher hochgeladen und ich habe eine öffentliche URL zum Abrufen von Bildern erhalten. Ich erhalte das Bild erfolgreich mit der einfachen 'HttpURLConnection', aber wenn ich glide verwende, bleibt es immer in 'error' hängen, anstatt das Bild zu holen. und gleiten funktioniert auf anderen URLs, die ich von Google kopiert habe und es funktioniert gut. aber ich gab Backendless URL es funktioniert nicht.Glide zeigt keine Bilder von backendless URL

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); 

und glide Version ist: 3.7.0

hier ist meine backendless URL: https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage.png

+0

Ich versuchte es auf meiner Seite und es scheint für mich mit Glide gut zu funktionieren. Es dauert einige Sekunden, aber es funktioniert. Überprüfen Sie noch einmal. – Sac

+0

'.load (" https://api.backendless.com/CF512434-CCA8-067C-FF92-D76481A44000/v1/files/profilePhotos/mubtada.syedprofileImage ")'. Hast du da nicht ein '.png' vergessen? – greenapps

+0

Sorry, ich habe es vergessen. Ich habe es hinzugefügt, aber es funktioniert nicht. –

Antwort

0

Ich habe das Bild in meinem Gerät Glide verwenden. Bitte finden Sie das angehängte Bild.

(Version: kompilieren 'com.github.bumptech.glide: glide: 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

Ich arbeite in Fragment, tue diesen Effekt? plus hier ist mein 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 (Image); ' –

+0

dies meine glide Version ist, kompilieren‚com.github.bumptech.glide: glide: 3.7. 0 ' –

+0

Pls post Ihren Fehler –

0

Vielleicht ist es wegen der Unterstützung von 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(); 
} 

} Anwendung

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

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