2014-08-28 1 views
-1

J'ai essayé de charger l'image à ce Url pendant plusieurs jours maintenant mais rien que j'ai essayé n'a été réussi. J'utilise la bibliothèque Volley et la première chose que j'ai essayé était simple ...Pourquoi ne peut pas charger l'image à partir de cette URL dans Android

 mImageView.setImageUrl("https://cub.com/content/dam/B2C/enterprisebannerwebsites/Cub/CUB_WK25_HP_BackToSchool.jpg", VolleyImgController.getInstance().getImageLoader()); 

Mais ce retour un blanc dans le networkimageview. Avec le message suivant dans le logcat

08-27 22:33:49.209 3069-3069/com.supervalu.mobile.android D/Volley﹕ [1] Request.finish: 15308 ms: [ ] https://cub.com/content/dam/B2C/enterprisebannerwebsites/Cub/CUB_WK25_HP_BackToSchool.jpg 0x422b54c3 LOW 1 

J'ai ensuite essayé de créer mon propre HttpStack au cas où il était un problème avec des images https de chargement en utilisant le code suivant ...

public static DefaultHttpClient getHttpsClient(){ 
    // register scheme for http 
    SchemeRegistry registry = new SchemeRegistry(); 
    registry.register(new Scheme("http",new PlainSocketFactory(),80)); 
    //register scheme for https 
    SocketFactory https_socket = new FakeSocketFactory(); 
    registry.register(new Scheme("https", https_socket,433)); 

    HttpParams httpParams = new BasicHttpParams(); 
    //setting connection timeout. 
    HttpConnectionParams.setConnectionTimeout(httpParams, MyConstants.CONNECTION_TIMEOUT); 
    HttpConnectionParams.setSoTimeout(httpParams, MyConstants.CONNECTION_TIMEOUT); 
    return new DefaultHttpClient(new ThreadSafeClientConnManager(httpParams,registry),httpParams); 

} 

Ce que je puis passé dans ce bloc de code

  requestQueue = Volley.newRequestQueue(getApplicationContext(),new HttpClientStack(HttpClient.getHttpsClient())); 

Cela n'a pas aidé non plus et j'ai eu la même réponse que précédemment.

Je puis téléchargé un exemple de projet de reprise de volée de https://github.com/ogrebgr/android_volley_examples pour voir si l'url travaillerait dans leur projet et il n'a pas non plus charger une image quand je l'ai branché.

Ma question est, pourquoi suis-je pas en mesure afficher une image à partir de cette URL? Y a-t-il quelque chose que je puisse faire pour y remédier?

===== ===== Modifier Url Variantes J'ai essayé http://cub.com/content/dam/B2C/enterprisebannerwebsites/Cub/CUB_WK25_HP_BackToSchool.jpg

https://cub.com/content/dam/B2C/enterprisebannerwebsites/Cub/CUB_WK25_HP_BackToSchool.jpg

https://www.cub.com/content/dam/B2C/enterprisebannerwebsites/Cub/CUB_WK25_HP_BackToSchool.jpg

Ces tous répondent avec une redirection 301 à cette url https://www.cub.com/content/dam/B2C/enterprisebannerwebsites/Cub/CUB_WK25_HP_BackToSchool.jpg

Je pense que le problème peut ne pas être avec la chaîne d'URL. Est-ce que quelqu'un est capable de charger une image de cette URL dans leur application Android? Si oui, comment avez-vous accompli cela?

Répondre

0

J'accède à l'URL par chrome, il est dit que ce n'est pas un lien secret. Pourquoi ne pas essayer de changer l'URL à https://www.cub.com/content/dam/B2C/enterprisebannerwebsites/Cub/CUB_WK25_HP_BackToSchool.jpg

PS: ajoutez simplement www à l'en-tête de l'URL.

mis à jour: J'utilise Android-Universal-Image-Loader et je recherche Document, l'image est chargée !!!

enter image description here

PS: Peut-être que vous avez besoin de ca web: openssl s_client -connect cub.com:443

-----BEGIN CERTIFICATE----- 
MIIFRjCCBC6gAwIBAgIQSU8lG29bDd4CR2JehPYubDANBgkqhkiG9w0BAQUFADCB 
tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL 
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug 
YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm 
VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTMwMzA4 
MDAwMDAwWhcNMTYwMzA3MjM1OTU5WjB4MQswCQYDVQQGEwJVUzESMBAGA1UECBMJ 
TWlubmVzb3RhMRUwEwYDVQQHFAxFZGVuIFByYWlyaWUxFzAVBgNVBAoUDlNVUEVS 
VkFMVSBJTkMuMQswCQYDVQQLFAJJVDEYMBYGA1UEAxQPcmV3YXJkcy5jdWIuY29t 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlTBhdBk0FHmVmr0enoab 
19ypUxvF+C5+ITCHiY9w4nFWF7BkGzfY3DQ7NJdTK23R8XMTNW3kaZpAXYxF43zD 
zRiRgql35lYx8KrVOwJitCEMbTloCXc8LzCqNNH9y6spQoAz+Ir8sv2AekhDBmhX 
47wWtywhKWlpnYuWwpYDgdIqD9vtCWokjr6oxxz3J7/EYXgLfybubpmxSbVH4JgO 
y2VvmN+dPrsXTfottPi2t5HRivQ2haR973LvmxyK/WXUcrF29IYcBCcGzYttTjeq 
5cztsRxdy3H1OOPx3itJ0m3NRU+a51lLXNTMGZC/NVvGBy8cko4+UAvDEnPTfxWD 
6QIDAQABo4IBjDCCAYgwJwYDVR0RBCAwHoILd3d3LmN1Yi5jb22CD3Jld2FyZHMu 
Y3ViLmNvbTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggr 
BgEFBQcDAQYIKwYBBQUHAwIwQwYDVR0gBDwwOjA4BgpghkgBhvhFAQc2MCowKAYI 
KwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMwHwYDVR0jBBgw 
FoAUDURcFlNEwYJ+HSCrJfQBY9i+eaUwRQYDVR0fBD4wPDA6oDigNoY0aHR0cDov 
L1NWUlNlY3VyZS1HMy1jcmwudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNybDB2 
BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWdu 
LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL1NWUlNlY3VyZS1HMy1haWEudmVyaXNp 
Z24uY29tL1NWUlNlY3VyZUczLmNlcjANBgkqhkiG9w0BAQUFAAOCAQEAl8bTworO 
6WUbnA1U4onCrQfScpKcRZkmWz2IOroUfwIOLNUKwigljBVZkfA6zfVnghOb8mRA 
0QX4XTCKzIi31QvT3wV4+GBD4F7iGxsi6rEG8aGLVk+rZ2Dd25Y5Lwpbnrdq59EN 
enfsqcpltCFa9E9fBe7cUvmdjBX5k2CC7nM7NiVD2oHtR0vnOx1jLARW45U5uBa7 
bBeJEFpkk//H/YvUgpEkqPHTtHw7wadhKUqS9+2dMEE7A1JNhE44TWC/C3kTHa+P 
ww0ZhHlmqAO2wAmMk+Q6iCt4Fa+rLENgvtXvoRRM0ngP6RUeEQ80+cTnHv22s8N3 
8PaBlDkOCYLySA== 
-----END CERTIFICATE----- 

Le suivi est le code que je l'habitude de le remplacer BaseImageDownLoader:

protected HttpsURLConnection createConnection(String url, Object extra) throws IOException { 
    String encodedUrl = Uri.encode(url, ALLOWED_URI_CHARS); 

    // Load CAs from an InputStream 
    // (could be from a resource or ByteArrayInputStream or ...) 
    CertificateFactory cf = null; 
    try { 
     cf = CertificateFactory.getInstance("X.509"); 
    } catch (CertificateException e1) { 

     // TODO Auto-generated catch block 
     e1.printStackTrace(); 

    } 
    // From https://www.washington.edu/itconnect/security/ca/load-der.crt 
    InputStream caInput = new BufferedInputStream(new FileInputStream(Environment.getExternalStorageDirectory() 
      + "/cub.crt")); 
    Certificate ca = null; 
    try { 
     try { 
      ca = cf.generateCertificate(caInput); 
      System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); 
     } catch (CertificateException e) { 

      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 
    } finally { 
     caInput.close(); 
    } 

    // Create a KeyStore containing our trusted CAs 
    String keyStoreType = KeyStore.getDefaultType(); 
    KeyStore keyStore = null; 
    try { 
     keyStore = KeyStore.getInstance(keyStoreType); 
     try { 
      keyStore.load(null, null); 
      keyStore.setCertificateEntry("ca", ca); 
     } catch (NoSuchAlgorithmException e1) { 

      // TODO Auto-generated catch block 
      e1.printStackTrace(); 

     } catch (CertificateException e1) { 

      // TODO Auto-generated catch block 
      e1.printStackTrace(); 

     } 

     // Create a TrustManager that trusts the CAs in our KeyStore 
     String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); 
     TrustManagerFactory tmf = null; 
     try { 
      tmf = TrustManagerFactory.getInstance(tmfAlgorithm); 
      tmf.init(keyStore); 
     } catch (NoSuchAlgorithmException e1) { 

      // TODO Auto-generated catch block 
      e1.printStackTrace(); 

     } 

     // Create an SSLContext that uses our TrustManager 
     SSLContext context = null; 
     try { 
      context = SSLContext.getInstance("TLS"); 
     } catch (NoSuchAlgorithmException e) { 

      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 
     try { 
      context.init(null, tmf.getTrustManagers(), null); 
     } catch (KeyManagementException e) { 

      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 
     HttpsURLConnection conn = (HttpsURLConnection) new URL(encodedUrl).openConnection(); 
     conn.setConnectTimeout(connectTimeout); 
     conn.setSSLSocketFactory(context.getSocketFactory()); 
     conn.setReadTimeout(readTimeout); 
     return conn; 
    } catch (KeyStoreException e) { 

     // TODO Auto-generated catch block 
     e.printStackTrace(); 

    } 
    return null; 

} 
Questions connexes