最近一直在完善云相册项目,寻找各种bug,昨天突然发现,图片上传经常出现错误,错误有可能与网速有关,但是这种错误却是致命的,我们不能保证所有人的网速都很稳定,于是我就仔细看了下代码,发现异常都是在此处response = httpClient.execute(post);执行上传动作的时候出的错。先对代码做一点说明吧,UploaderParam是一个实体类对象,里面存放的是下载信息(包括本地图片地址),别的部分只要懂httpClient应该都能明白的。(修改:唉,好像还是和网速有点关联啊,大家仅参考下代码吧)

[代码]java代码:

public String uploadFile(UploaderParam uploaderParam) {Log.d(TAG, "uploadFile ... ");HttpResponse response = null;BufferedReader reader = null;StringBuilder builder = new StringBuilder();final String fileNameIn = uploaderParam.getFileName();Log.i(TAG, "upload fileName: "+ fileNameIn);try {String epgUri = assembleEPGUrl(uploaderParam);HttpPost post = new HttpPost(epgUri);Log.i(TAG, "httpPost uri: " + epgUri);//HttpPost post = new HttpPost("http://10.0.64.132:8001/upload?sid=2&skey=23837391433022");MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);//读取本地图片,以流的形式FileInputStream inputStream = new FileInputStream(new File(uploaderParam.getFileName()));//final byte[] data = IOUtils.toByteArray(inputStream);final int length = inputStream.available();Log.i(TAG, "Length is: " + Integer.toString(length));InputStreamBody isb = new InputStreamBody(inputStream, "uploaderFile") {@Overridepublic long getContentLength() {return length;}@Overridepublic String getFilename() {return fileNameIn;}};multipartEntity.addPart("uploaderFile", isb);post.setEntity(multipartEntity);System.out.println(" 悲了个剧啊"+post.getURI());Log.d("uploadFile", "uploaderParam.getFileName() is : " + uploaderParam.getFileName());Thread.sleep(1000);try{response = httpClient.execute(post);}catch(Exception e){System.out.println("try again!!");Thread.sleep(1000);try{response = httpClient.execute(post);}catch(Exception e1){System.out.println("again 失败");return null;}}Log.d(TAG, "uploadFile .......................................................... ");Log.d(TAG, "1" + response.getStatusLine().getStatusCode());Log.d(TAG, "2" + response.getStatusLine().getReasonPhrase());if(response == null){System.out.println("response is null");}if(response.getStatusLine().getStatusCode() != HttpStatus.SC_OK){System.out.println("response.getStatusLine().getStatusCode() != HttpStatus.SC_OK");}//by LLHif(response != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {Log.d(TAG, "uploadFile success .......................................................... ");HttpEntity entity = response.getEntity();reader = new BufferedReader(new InputStreamReader(entity.getContent()));String line = null;while((line = reader.readLine()) != null) {builder.append(line);}reader.close();}else{Log.e(TAG, "execute() return null");}//EntityUtils.toString(response.getEntity());Log.d(TAG, "uploadFile result is : " + builder.toString());} catch (Throwable e) {e.printStackTrace();}return builder.toString();}

代码已经贴出来了,不过仅供参考,真正解决下载失败的其实是包问题,我们都知道,httpclient是封装好的协议,远比使用httpconnection方便很多,但是同时也会有很多问题,我们项目一开始引用的就是httpmime-4.0.1.jar,这个包真的拥有不小的问题,下载时很容易出错。于是我重下了个4.2版本,错误就不再产生了。希望我的这篇文章能帮助你们。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上文章是12年写的,现在基本都是4.0系统,不提倡使用HttpClient,google官方也已经不维护了吧,不管从哪个角度来讲HttpConnection才是现在最好的选择。

使用HttpClient下载图片常用代码,以及下载失败原因相关推荐

  1. 使用python下载图片(新手代码)

    使用python下载图片(新手代码) 刚学python 没多久, 代码处处是漏洞,也希望各位大佬理解一下 爬出来的图片... 使用的 是 https://www.tianapi.com/  接口下的  ...

  2. 小程序-下载图片 体验版 提示下载失败

    问题: 小程序下载图片,在开发工具上测试正常,但是在体验版真机测试提示下载失败,而且没有弹出授权弹出框, 解决: 在微信开发平台中的开发->开发设置-〉服务器域名->downloadFil ...

  3. css代码添加背景图片常用代码

    css代码添加背景图片常用代码 1 背景颜色 {background-color:数值} 2 背景图片 {background-image: url(url)|none} 3 背景重复 {backgr ...

  4. 关于在英伟达官网下载 CUDA 10.0 win10版本失败原因探索

    关于在英伟达官网下载 CUDA 10.0 win10版本失败原因探索: 1.尝试了比较多的途径去下载,一致以为是网速问题 和 下载软件的问题,但尝试许多改变皆无果: 2.后来在贴吧找到帖子说之前9.0 ...

  5. python下载特别慢-Python3 用 urllib 下载图片非常慢,会是什么原因呢?

    初学者想学写个爬虫,边学边写 想要下载一张 Y 站的图片,代码为 urllib.request.urlopen('http://xxx.jpg').read() 其中 url 是可以正常访问的.图片不 ...

  6. python怎么批量下载图片_怎样批量下载在线图片?

    原标题:怎样批量下载在线图片? 大家早啊,我是云景,以前分享过很多关于批量下载图片的技巧,有使用插件程序的,有使用工具的. 之前也教过大家怎么使用F12开发者 今天给大家分享的是,使用Python来批 ...

  7. php ajax 下载图片路径,JavaScript_批量下载对路网图片并生成html的实现方法,对路使用ajax实现异步加载内容 - phpStudy...

    批量下载对路网图片并生成html的实现方法 对路使用ajax实现异步加载内容,在它的js代码中找到了相关代码 type : 'POST', url : '/index.php/request/new_ ...

  8. python 下载图片无法打开_python下载的图片不显示,无法查看

    代码是这样的: import urllib2 import re import urllib url ="http://www.zhangzishi.cc/20151004mt.html&q ...

  9. python requests html格式图片打不开_爬虫下载图片打不开是什么原因,最新简易爬虫教程...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. (本文来自www.777n.com) 作者: GitPython (原文来 ...

最新文章

  1. HDU 2149.Public Sale-巴什博奕
  2. 【BERT】BERT模型压缩技术概览
  3. 2021第一场 | 阿里云高校计划训练营全面升级!0成本体验云计算入门到进阶
  4. 【解题报告+思路拓展】蓝桥杯 拉马车 2017年C组真题
  5. 从0开始学习自动化测试框架cypress(二)DOM
  6. 中运量71路线路图_上海新增公交线路835路 连接中运量71路与虹桥枢纽
  7. 算法与数据结构实验题 4.1 伊姐姐数字 game
  8. linux运行asm文件,linux – 尝试在Ubuntu上的NASM上运行.asm文件时出错
  9. 墓碑上的字符C语言,墓碑上常见的“故显考、故显妣、先考、先妣”,分别是什么意思?...
  10. 性能强大的家庭服务器,家庭服务器解决方案——硬件篇
  11. 化学共价键:π键和σ键
  12. centos linux 查看ip,centos如何查看ip
  13. 【Linux】Ubuntu使用FlashFXP(FTP客户端)
  14. 王飞跃教授点评:无人车最“靠谱”的应用领域——不是出行
  15. epic注册什么服务器最好,epic国内有服务器吗(epic服务器在哪)
  16. 赛特斯艰难上市,“软件定义通信”的路并不好走
  17. 深入理解Plasma(四)Plasma Cash
  18. ipcam 网络摄像机介绍
  19. 汽车充电桩检测设备TK4860C交流充电桩检定装置
  20. html网页设置音频,HTML教程 - 插入声音和音乐到HTML页面里

热门文章

  1. Java String字符串转Json
  2. supervisor查询状态报错
  3. 送书 | 《Django项目开发实战》
  4. 图形编辑器——Graph Editor(树图必备)
  5. VMTools安装及使用
  6. elastica php yii,shuliangfu
  7. 找回你的xournal++未保存文档
  8. 联想电脑去掉开机广告 关闭开机广告 ideapad 去掉开机广告
  9. ArcGIS API For Javascript 4.15 绘制地图:在地图上绘制点和面
  10. Soot 静态分析框架(二)Soot的核心