AuthImageDownloader.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.xzjmyk.pm.activity.view;
  2. import android.content.Context;
  3. import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
  4. import java.io.BufferedInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.net.HttpURLConnection;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import java.security.KeyManagementException;
  11. import java.security.NoSuchAlgorithmException;
  12. import javax.net.ssl.HostnameVerifier;
  13. import javax.net.ssl.HttpsURLConnection;
  14. import javax.net.ssl.SSLContext;
  15. import javax.net.ssl.SSLSession;
  16. import javax.net.ssl.SSLSocketFactory;
  17. public class AuthImageDownloader extends BaseImageDownloader {
  18. private SSLSocketFactory mSSLSocketFactory;
  19. public AuthImageDownloader(Context context) {
  20. super(context);
  21. SSLContext sslContext = sslContextForTrustedCertificates();
  22. mSSLSocketFactory = sslContext.getSocketFactory();
  23. }
  24. public AuthImageDownloader(Context context, int connectTimeout, int readTimeout) {
  25. super(context, connectTimeout, readTimeout);
  26. SSLContext sslContext = sslContextForTrustedCertificates();
  27. mSSLSocketFactory = sslContext.getSocketFactory();
  28. }
  29. @Override
  30. protected InputStream getStreamFromNetwork(String imageUri, Object extra) throws IOException {
  31. URL url = null;
  32. try {
  33. url = new URL(imageUri);
  34. } catch (MalformedURLException e) {
  35. }
  36. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  37. conn.setConnectTimeout(connectTimeout);
  38. conn.setReadTimeout(readTimeout);
  39. if (conn instanceof HttpsURLConnection) {
  40. ((HttpsURLConnection) conn).setSSLSocketFactory(mSSLSocketFactory);
  41. ((HttpsURLConnection) conn).setHostnameVerifier((DO_NOT_VERIFY));
  42. }
  43. return new BufferedInputStream(conn.getInputStream(), BUFFER_SIZE);
  44. }
  45. // always verify the host - dont check for certificate
  46. final HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
  47. @Override
  48. public boolean verify(String hostname, SSLSession session) {
  49. return true;
  50. }
  51. };
  52. public SSLContext sslContextForTrustedCertificates() {
  53. javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
  54. javax.net.ssl.TrustManager tm = new miTM();
  55. trustAllCerts[0] = tm;
  56. SSLContext sc = null;
  57. try {
  58. sc = SSLContext.getInstance("SSL");
  59. sc.init(null, trustAllCerts, null);
  60. //javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
  61. } catch (NoSuchAlgorithmException e) {
  62. e.printStackTrace();
  63. } catch (KeyManagementException e) {
  64. e.printStackTrace();
  65. } finally {
  66. return sc;
  67. }
  68. }
  69. class miTM implements javax.net.ssl.TrustManager,
  70. javax.net.ssl.X509TrustManager {
  71. public java.security.cert.X509Certificate[] getAcceptedIssuers() {
  72. return null;
  73. }
  74. public boolean isServerTrusted(
  75. java.security.cert.X509Certificate[] certs) {
  76. return true;
  77. }
  78. public boolean isClientTrusted(
  79. java.security.cert.X509Certificate[] certs) {
  80. return true;
  81. }
  82. public void checkServerTrusted(
  83. java.security.cert.X509Certificate[] certs, String authType)
  84. throws java.security.cert.CertificateException {
  85. return;
  86. }
  87. public void checkClientTrusted(
  88. java.security.cert.X509Certificate[] certs, String authType)
  89. throws java.security.cert.CertificateException {
  90. return;
  91. }
  92. }
  93. }