前段时间在使用ImageLoader异步加载服务端返回的图片时总是出现

  1. java.io.FileNotFoundException: http://xxxx/l046/10046137034b1c0db0.jpg
  2.  
  3. at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
  4.  
  5. at com.nostra13.universalimageloader.core.download.URLConnectionImageDownloader.getStreamFromNetwork(URLConnectionImageDownloader.java:40)
  6.  
  7. at com.nostra13.universalimageloader.core.download.ImageDownloader.getStream(ImageDownloader.java:27)
  8.  
  9. at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.saveImageOnDisc(LoadAndDisplayImageTask.java:296)
  10.  
  11. at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:204)
  12.  
  13. at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:128)
  14.  
  15. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)

这样的异常。

刚开始没明白怎么回事,于是就开始疯狂的google。最后终于在stackoverflow发下了这个问题的解决方案。这是原文http://stackoverflow.com/questions/14305765/filenotfoundexception-with-universal-image-loader

出现这个错误的原因是:服务端使用的是Apache 提供的开源组件HttpGet和HttpPost。而ImageLoader默认使用的是java再带的原生组件URLHttpConnection。因此在接收和发送数据时会出现解析异常。

解决办法:Android客户端在初始化ImageLoader时将默认的URLHttpConnection改为DefaultHttpClient。

主要代码:

  1. ImageLoaderConfiguration config =
  2. new ImageLoaderConfiguration
  3. .Builder(MainActivity.sharedMainActivity.getApplicationContext())
  4. .defaultDisplayImageOptions(defaultOptions)
  5. .discCache(new UnlimitedDiscCache(cacheDir))
  6. .threadPoolSize(1)
  7. .memoryCache(new WeakMemoryCache())
  8. .imageDownloader(new HttpClientImageDownloader(new DefaultHttpClient(manager, params)))
  9. .build();

完整初始化代码:

  1. HttpParams params = new BasicHttpParams();
  2. // Turn off stale checking. Our connections break all the time anyway,
  3. // and it's not worth it to pay the penalty of checking every time.
  4. HttpConnectionParams.setStaleCheckingEnabled(params, false);
  5. // Default connection and socket timeout of 10 seconds. Tweak to taste.
  6. HttpConnectionParams.setConnectionTimeout(params, 10 * 1000);
  7. HttpConnectionParams.setSoTimeout(params, 10 * 1000);
  8. HttpConnectionParams.setSocketBufferSize(params, 8192);
  9.  
  10. // Don't handle redirects -- return them to the caller. Our code
  11. // often wants to re-POST after a redirect, which we must do ourselves.
  12. HttpClientParams.setRedirecting(params, false);
  13. // Set the specified user agent and register standard protocols.
  14. HttpProtocolParams.setUserAgent(params, "some_randome_user_agent");
  15. SchemeRegistry schemeRegistry = new SchemeRegistry();
  16. schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
  17. schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
  18.  
  19. ClientConnectionManager manager = new ThreadSafeClientConnManager(params, schemeRegistry);
  20.  
  21. ImageLoaderConfiguration config =
  22. new ImageLoaderConfiguration
  23. .Builder(MainActivity.sharedMainActivity.getApplicationContext())
  24. .defaultDisplayImageOptions(defaultOptions)
  25. .discCache(new UnlimitedDiscCache(cacheDir))
  26. .threadPoolSize(1)
  27. .memoryCache(new WeakMemoryCache())
  28. .imageDownloader(new HttpClientImageDownloader(new DefaultHttpClient(manager, params)))
  29. .build();

Android Universal Image Loader java.io.FileNotFoundException: http:/xxx/lxx/xxxx.jpg的更多相关文章

  1. java.io.FileNotFoundException: D:\xxx\yyy (拒绝访问。)问题

    File file=new File(fileAllName); FileWriter fw=new FileWriter(file); 在Java的 FileWriter 方法时 系统抛出了异常 j ...

  2. freemarker报 java.io.FileNotFoundException:及TemplateLoader使用

    使用过freemarker的肯定其见过如下情况: java.io.FileNotFoundException: Template xxx.ftl not found. 模板找不到.可能你会认为我明明指 ...

  3. Android java.io.FileNotFoundException:*** (Permission denied)

    自从离开上海来到杭州之后,陆续接触了Android,Python,C++,OpenCV,最为一个新人来说,一路上遇到了很多坑,幸运的是 这互联网的强大(大傻子我还是蛮喜欢的哈),一路填填补补总算走了下 ...

  4. Android代码混淆的问题解决(java.io.FileNotFoundException)

    Android Studio(2.3.3) 在给代码混淆时,提示: Warning:Exception while processing task java.io.FileNotFoundExcept ...

  5. Android下载文件提示文件不存在。。。 java.io.FileNotFoundException

    遇到这个错误java.io.FileNotFoundException,事实上文件是存在的,把地址复制到手机浏览器都能够直接下载的,但为嘛不能下载呢. Error in downloadBitmap ...

  6. android universal image loader 缓冲原理详解

    1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的.可高度定制的图片缓存,本文简称为UIL ...

  7. keytool 错误: java.io.FileNotFoundException: 拒绝访问

    keytool 错误: java.io.FileNotFoundException: 拒绝访问 打开命令行,切换到D:\AndroidStudioProjects\MyApplication\app目 ...

  8. Caused by: java.io.FileNotFoundException

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...

  9. java.io.FileNotFoundException: antlr-2.7.7.jar (系统找不到指定的路径。)[待解决]

    严重: Failed to destroy the filter named [struts2] of type [org.apache.struts2.dispatcher.ng.filter.St ...

随机推荐

  1. display: flex; 布局

    废话不多说,供上我学习Flex布局的启蒙文章,一切的答案,尽在这里,仔细阅读,多多回味!保证你有所收获! http://www.ruanyifeng.com/blog/2015/07/flex-gra ...

  2. 去除input获取光标时的默认样式

    给input加上样式   outline:none;

  3. vue项目导入外部css样式和js文件

    <template> <div id="app" > </div> </template> <script src=" ...

  4. jQuery js 中return false,e.preventDefault(),e.stopPropagation()的区别(事件冒泡)

    有时候遇到冒泡事件很烦人,真的..... 1.e.stopPropagation()阻止事件冒泡 <head> <title></title> <script ...

  5. Java执行sh等

    1.通过java代码,调用bat.shell等脚本或者命令 1)使用Runtime的exec()方法,会返回一个用于管理操作系统进程的Process对象 Process process =null; ...

  6. React中使用styled-components的基础使用

    今天准备来给大家分享分享React中styled-components的基础使用,仅仅是我个人的一些理解,不一定全对,有错误还请大佬们指出,496838236这是我qq,有想指点我的大佬随时加我qq好 ...

  7. 【代码笔记】Web-ionic-按钮

    一,效果图. 二,代码.index.html文件如下所示. <!DOCTYPE html> <html> <head> <meta charset=" ...

  8. Python笔记(十四):操作excel openpyxl模块

    (一)  常遇到的情况 就我自己来说,常遇到的情况可能就下面几种: 读取excel整个sheet页的数据. 读取指定行.列的数据 往一个空白的excel文档写数据 往一个已经有数据的excel文档追加 ...

  9. Source Insight里头文件注释和函数头的注释

    1.将下述代码拷贝入一个文件,扩展名为em 2.打开BASE工程,添加本文件,并重新同步 3.添加hh_InsertFuncHeader的快捷键,即为函数头注释,光标需要放在函数名那一行,否则无效 4 ...

  10. 使用 Array2XML把数组转成XML格式,有相同的节点

    最近开发一个项目,需要调用第三方的接口,第三方提供的数据是xml,我直接使用Array2XML把php数组转成XML格式. XML格式如: <root> <body> < ...