public class AuthImageDownloader extends BaseImageDownloader {
public static final String TAG = AuthImageDownloader.class.getName();
public AuthImageDownloader (Context context, int connectTimeout, int readTimeout) {
super (context, connectTimeout, readTimeout);
}
@Override
protected InputStream getStreamFromNetwork (String imageUri, Object extra) throws IOException {
URL url = null ;
try {
url = new URL(imageUri);
} catch (MalformedURLException e) {
Log.e(TAG, e.getMessage(), e);
}
HttpURLConnection http = null ;
if (Scheme.ofUri(imageUri) == Scheme.HTTPS) {
trustAllHosts();
HttpsURLConnection https = (HttpsURLConnection) url
.openConnection();
https.setHostnameVerifier(DO_NOT_VERIFY);
http = https;
http.connect();
} else {
http = (HttpURLConnection) url.openConnection();
}
http.setConnectTimeout(connectTimeout);
http.setReadTimeout(readTimeout);
return new FlushedInputStream(new BufferedInputStream(
http.getInputStream()));
}
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
@Override
public boolean verify (String hostname, SSLSession session) {
return true ;
}
};
/**
* Trust every server - dont check for any certificate
*/
private static void trustAllHosts () {
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());
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
}
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder (context)
config.threadPriority (Thread.NORM _PRIORITY - 2 )
config.denyCacheImageMultipleSizesInMemory ()
config.diskCacheFileNameGenerator (new Md5FileNameGenerator())
config.diskCacheSize (50 * 1024 * 1024 )
config.tasksProcessingOrder (QueueProcessingType.LIFO )
config.writeDebugLogs ()
config.imageDownloader (new AuthImageDownloader(context,5000 ,5000 ))
// Initialize ImageLoader with configuration.
ImageLoader.getInstance ().init (config.build ())
options = new DisplayImageOptions.Builder ()
.showImageOnLoading (R.mipmap .ic _stub)
.showImageForEmptyUri (R.mipmap .ic _empty)
.showImageOnFail (R.mipmap .ic _error)
.cacheInMemory (true)
.cacheOnDisk (true)
.considerExifParams (true)
.displayer (new RoundedBitmapDisplayer(20 ))
.build ()