讲到http就必须要了解URI和URL

URI (uniform resource identifier)统一资源标志符;

URL(uniform resource location )统一资源定位符(或统一资源定位器);

能够理解成URL是URI的子集,URI是一抽象的标识符,URL能够理解成详细的标识符;仅仅要是网络上的资源就能找到唯一的URL。

文件夹结构

效果图

关键代码

HttpUtils.java类

  1. package com.dzt.downloadimage.utils;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.net.HttpURLConnection;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8.  
  9. import android.graphics.Bitmap;
  10. import android.graphics.BitmapFactory;
  11.  
  12. /**
  13. * http工具类 http能够使用HttpURLConnection或HttpClient
  14. *
  15. * @author Administrator
  16. * @date 2014.05.10
  17. * @version V1.0
  18. */
  19. public class HttpUtils {
  20.  
  21. /**
  22. * 获取网络图片
  23. *
  24. * @param urlString
  25. * 如:http://f.hiphotos.baidu.com/image/w%3D2048/sign=3
  26. * b06d28fc91349547e1eef6462769358
  27. * /d000baa1cd11728b22c9e62ccafcc3cec2fd2cd3.jpg
  28. * @return
  29. * @date 2014.05.10
  30. */
  31. public static Bitmap getNetWorkBitmap(String urlString) {
  32. URL imgUrl = null;
  33. Bitmap bitmap = null;
  34. try {
  35. imgUrl = new URL(urlString);
  36. // 使用HttpURLConnection打开连接
  37. HttpURLConnection urlConn = (HttpURLConnection) imgUrl
  38. .openConnection();
  39. urlConn.setDoInput(true);
  40. urlConn.connect();
  41. // 将得到的数据转化成InputStream
  42. InputStream is = urlConn.getInputStream();
  43. // 将InputStream转换成Bitmap
  44. bitmap = BitmapFactory.decodeStream(is);
  45. is.close();
  46. } catch (MalformedURLException e) {
  47. // TODO Auto-generated catch block
  48. System.out.println("[getNetWorkBitmap->]MalformedURLException");
  49. e.printStackTrace();
  50. } catch (IOException e) {
  51. System.out.println("[getNetWorkBitmap->]IOException");
  52. e.printStackTrace();
  53. }
  54. return bitmap;
  55. }
  56. }

使用到网络必须要加入权限和要有网络,否则下载失败

  1. <uses-permission android:name="android.permission.INTERNET" />

下载属于耗时的操作,假设放在UI线程出easy出现ANR;所以Android4.0之后对网络的操作不能放在UI线程,在这里我把下载放在AsyncTask处理。

  1. class downloadImageTask extends AsyncTask<String, Integer, Boolean> {
  2.  
  3. @Override
  4. protected Boolean doInBackground(String... params) {
  5. // TODO Auto-generated method stub
  6. System.out.println("[downloadImageTask->]doInBackground "
  7. + params[0]);
  8. mDownloadImage = HttpUtils.getNetWorkBitmap(params[0]);
  9. return true;
  10. }
  11.  
  12. // 下载完毕回调
  13. @Override
  14. protected void onPostExecute(Boolean result) {
  15. // TODO Auto-generated method stub
  16. image.setImageBitmap(mDownloadImage);
  17. System.out.println("result = " + result);
  18. super.onPostExecute(result);
  19. }
  20.  
  21. // 更新进度回调
  22. @Override
  23. protected void onProgressUpdate(Integer... values) {
  24. // TODO Auto-generated method stub
  25. super.onProgressUpdate(values);
  26. }
  27.  
  28. }

在onPostExecute和onProgressUpdate能够方便我们更新UI,当然也能够开一个线程处理,使用AsyncTask就更方便。



完整Demo:http://download.csdn.net/detail/deng0zhaotai/7326005

网络上一个不错的资源:http://square.github.io/okhttp/

OkHttp是Square的一款产品,是一个Java的开源HTTP和SPDYclient开发包,支持Android。Android自带的两个HTTP框架(HttpURLConnection和HttpClient),在各种Android OS版本号一直充斥着错误,能够使不论什么理智的开发人员走向崩溃。只是幸运地是,OkHttp攻克了这些问题。OkHttp是建立在HttpUrlConnection上,从Android代码库保持最新的修复,这意味着再也没有与旧操作系统版本号出现兼容性问题的噩梦

Android使用HttpURLConnection下载图片的更多相关文章

  1. Android采用HttpClient下载图片

    在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...

  2. 使用HttpURLConnection下载图片

    import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.Ht ...

  3. Android 本地/网路下载图片实现放大缩小

     Android 本地加载/网路下载图片实现放大缩小拖拉效果,自定义控件. package com.example.ImageViewCustom; import android.app.Activi ...

  4. Android测试AsyncTask下载图片

    package com.example.myact8_async; import org.apache.http.HttpEntity; import org.apache.http.HttpResp ...

  5. android 多线程 AsyncTask 下载图片

    AsyncTask 下载图片 package com.test.network; import android.graphics.Bitmap; import android.graphics.Bit ...

  6. 通过HttpURLConnection下载图片到本地--下载附件

    一.背景说明 现在我做的系统中,需要有一个下载附件的功能,其实就是下载图片到本地中.相应的图片保存在多媒体系统中,我们只能拿到它的资源地址(url),而不是真实的文件. 这里记录的是下载单个图片.下篇 ...

  7. 通过HttpURLConnection下载图片到本地--批量下载

    一.背景说明 这篇文章讲述的是批量下载附件,在上一篇文章中,介绍了下载单个附件(上一篇文章). 二.实现思路 主要的实现思路:创建文件夹->文件夹中创建需要下载的文件->压缩文件夹-> ...

  8. Android 使用AsyncTask 下载图片的例子,学会使用AsyncTask

    1.添加布局文件:activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...

  9. HttpURLConnection下载图片的两种方式

    public class MainActivity extends AppCompatActivity { private ImageView iv; private String imageurl ...

随机推荐

  1. 关于使用X-UA-Compatible来设置IE浏览器兼容模式

    原文地址:http://www.cnblogs.com/nidilzhang/archive/2010/01/09/1642887.html 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外 ...

  2. 期望dp专题

    一直不明白为什么概率是正推,期望是逆推. 现在题目做多了,慢慢好像有点明白了 poj2096 收集bug,  有n个种类的bug,和s个子系统.  每找到一个bug需要一天. 要我我们求找到n个种类的 ...

  3. windows phone 页面导航(6)

    原文:windows phone 页面导航(6) 页面导航的例子我们使用的是两个页面,从第一个页面(MainPage)导航到第二个页面(SecondPage),然后可以从第二个页面导航到第一个页面 , ...

  4. Trie图

    AC自动机是KMP的多串形式,当文本串失配时,AC自动机的fail指针告诉我们应该跳到哪里去继续匹配(跳到当前匹配串的最长后缀去),所以AC自动机的状态是有限的 但是AC自动机具有不确定性, 比如要求 ...

  5. [Elasticsearch] 邻近匹配 (三) - 性能,关联单词查询以及Shingles

    提高性能 短语和邻近度查询比简单的match查询在性能上更昂贵.match查询仅仅是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则须要计算和比較多个可能 ...

  6. 【Linux驱动】TQ2440 LED驱动程序

    ★整体介绍 LED驱动程序主要实现了TQ2440开发板上的4个LED灯的硬件驱动,实现了对引脚GPIOB5.GPIOB6.GPIOB7.GPIOB8的高低电平设置(common-smdk.c中已经实现 ...

  7. HDU 3036 Escape 网格图多人逃生 网络流||二分匹配 建图技巧

    题意: 每一个' . '有一个姑娘, E是出口,'.'是空地 , 'X' 是墙. 每秒钟每一个姑娘能够走一步(上下左右) 每秒钟每一个出口仅仅能出去一个人 给定n*m的地图, 时限T 问全部姑娘是否能 ...

  8. 关于mysql主从复制的概述与分类(转)

    一.概述: 按照MySQL的同步复制特点,大体上可以分为三种类别: 1.异步复制: 2.半同步复制: 3.完全同步的复制: -------------------------------------- ...

  9. NYOJ710 外星人的供给站 【贪心】

    外星人的供给站 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 外星人指的是地球以外的智慧生命.外星人长的是不是与地球上的人一样并不重要,但起码应该符合我们眼下对生命基 ...

  10. 源码安装apache及配置转发

    一.    安装Apache a)    解压:tar -xvf httpd-*; b)    ./configure --prefix=/usr/oracle/apache CC="gcc ...