ImageLoader 加载https图片报异常 SSLCertificateSocketFactory
来源:互联网 发布:apple mac.pro 病毒 编辑:程序博客网 时间:2024/04/27 21:45
近期在做项目时,以前使用的http,现在要用https,在使用的时候发现ImageLoader加载图片的时候有的图片加
载不出来,报SSLCertificateSocketFactory这个异常,网上搜说有人已经修改universalimageloader了,把这些配置弄好了,然后重新打包为universalimageloader,jar,解决了问题,但是我试试了还不行
解决方法:
1 重写 AuthImageDownloader
public class AuthImageDownloader extends BaseImageDownloader { public static final String TAG = AuthImageDownloader.class.getName(); /** * {@value} */ public static final int DEFAULT_HTTP_CONNECT_TIMEOUT = 5 * 1000; // milliseconds /** * {@value} */ public static final int DEFAULT_HTTP_READ_TIMEOUT = 20 * 1000; // milliseconds public AuthImageDownloader(Context context) { this(context, DEFAULT_HTTP_CONNECT_TIMEOUT, DEFAULT_HTTP_READ_TIMEOUT); } 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())); } // always verify the host - dont check for certificate 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() { // Create a trust manager that does not validate certificate chains 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[]{}; } }}; // Install the all-trusting trust manager try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection .setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e) { e.printStackTrace(); } }}2 配置ImageLoader
ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(getApplicationContext()) .imageDownloader(new AuthImageDownloader(this)) .build();ImageLoader.getInstance().init(config);
0 0
- ImageLoader 加载https图片报异常 SSLCertificateSocketFactory
- ImageLoader加载https图片
- ImageLoader加载https图片
- ImageLoader 加载https 图片路径
- ImageLoader加载https的图片
- 完美解决imageloader加载https图片
- 完美解决imageloader加载https图片
- ImageLoader 加载本地图片
- ImageLoader加载圆形图片
- Android 图片加载ImageLoader
- imageloader加载网络图片
- ImageLoader加载图片配置
- imageloader加载本地图片
- ImageLoader加载圆形图片
- 图片的加载ImageLoader
- 图片加载类ImageLoader
- universal-ImageLoader加载图片
- Android图片加载ImageLoader
- 第十一篇:欧赔与亚盘在运用中各自的优劣
- 2796: [Poi2012]Fibonacci Representation
- 每天一个linux命令——rm
- Python无法使用pip
- 用北通阿修罗TE控制turtlebot2利用RPLIDAR A2 进行简单的hector_mapping测试
- ImageLoader 加载https图片报异常 SSLCertificateSocketFactory
- java变量和基本数据类型
- 仿 36Kr Banner
- HTTP请求错误码大全
- java中采用Pull解析器对XML文件进行解析
- 模仿微信 自定义 语音按钮
- visual studio 2015 include无法打开源文件
- springMVC总结一
- linux下配置apache+tomcat集群的负载均衡