在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片

HttpURLConnection与HttpClient的差别:

HttpClient是个非常不错的开源框架(org.appache.http),封装了訪问http的请求头,參数,内容体。响应等等,使用起来更方面更强大。

HttpURLConnection是java的标准类,能够实现简单的基于URL请求、响应功能,什么都没封装。用起来太原始。比方重訪问的自己定义,以及一些高级功能等。

还是在上一章的基础上加入HttpClient

关键下载代码

/**
* 通过Get获取网页内容
*
* @param url
* 如:http://preview.quanjing.com/is002/ev601-025.jpg
* @return
* @throws ClientProtocolException
* @throws IOException
* @date 2014.05.10
*/
public static Bitmap getHttpGetBitmap(String url)
throws ClientProtocolException, IOException {
Bitmap bitmap = null;
// 新建一个默认的连接
HttpClient client = new DefaultHttpClient();
// 新建一个Get方法
HttpGet get = new HttpGet(url);
// 得到网络的回应
HttpResponse response = client.execute(get); // 假设server响应的是OK的话! if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream is = response.getEntity().getContent();
bitmap = BitmapFactory.decodeStream(is);
is.close();
}
return bitmap;
}

訪问互联网权限

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

Activity下载代码

package com.dzt.downloadimage;

import java.io.IOException;
import java.net.MalformedURLException; import org.apache.http.client.ClientProtocolException; import android.app.Activity;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView; import com.dzt.downloadimage.utils.HttpUtils; public class MainActivity extends Activity implements OnClickListener { private Bitmap mDownloadImage = null;
private ImageView image = null;
private downloadImageTask task;
private boolean _isExe = false; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initWidgets();
task = new downloadImageTask();
} @Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
if (_isExe) {
task.cancel(true); // 取消操作
}
} private void initWidgets() {
image = (ImageView) findViewById(R.id.img);
Button btn = (Button) findViewById(R.id.download_btn);
btn.setOnClickListener(this);
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.download_btn:
if (!_isExe) {
task.execute("http://preview.quanjing.com/is002/ev601-025.jpg"); // 运行异步操作
_isExe = true;
}
break; default:
break;
}
} class downloadImageTask extends AsyncTask<String, Integer, Boolean> { @Override
protected Boolean doInBackground(String... params) {
// TODO Auto-generated method stub
System.out.println("[downloadImageTask->]doInBackground "
+ params[0]);
// try {
// mDownloadImage = HttpUtils.getNetWorkBitmap(params[0]);
// } catch (MalformedURLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
try {
mDownloadImage = HttpUtils.getHttpGetBitmap(params[0]);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
} // 下载完毕回调
@Override
protected void onPostExecute(Boolean result) {
// TODO Auto-generated method stub
image.setImageBitmap(mDownloadImage);
System.out.println("result = " + result);
super.onPostExecute(result);
} // 更新进度回调
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
} }
}

假设图片较大可能会下载失败



Demo:http://download.csdn.net/detail/deng0zhaotai/7326167

版权声明:本文博主原创文章,博客,未经同意不得转载。

Android采用HttpClient下载图片的更多相关文章

  1. Android测试AsyncTask下载图片

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

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

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

  3. Android 采用HttpClient提交数据到服务器

    在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器>介绍了android的两种提交数据到服务器的方法 本文继续介 ...

  4. Android使用HttpURLConnection下载图片

    讲到http就必须要了解URI和URL URI (uniform resource identifier)统一资源标志符: URL(uniform resource location )统一资源定位符 ...

  5. android 多线程 AsyncTask 下载图片

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

  6. android 通过httpclient下载文件并保存

    代码:(主要针对图片.gif下载无问题) /** * 下载网络文件 * @param url 请求的文件链接 * @param IsMD5Name 是否MD5加密URL来命名文件名 * @param ...

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

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

  8. 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载

    19af543b068bdb7f27787c2bc69aba7f Additional Download (32-, 64-bit) Package r10 STL debug info androi ...

  9. Android下载图片/调用系统相机拍照、显示并保存到本地

    package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException ...

随机推荐

  1. 转载:10 Easy Steps to a Complete Understanding of SQL

    10 Easy Steps to a Complete Understanding of SQL 原文地址:http://tech.pro/tutorial/1555/10-easy-steps-to ...

  2. 最全面 Nginx 入门教程 + 常用配置解析

    转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 ...

  3. Thrift入门 (一)

    Install Go to thrift page download thrift. 1 2 3 4 brew install boost ./configure --without-python s ...

  4. C# 图片压缩 开源库

    http://www.rasteredge.com/how-to/csharp-imaging/image-compressing/ http://www.rasteredge.com/dotnet- ...

  5. 【PAT】1012. The Best Rank (25)

    题目链接: http://pat.zju.edu.cn/contests/pat-a-practise/1012 题目描述: To evaluate the performance of our fi ...

  6. C# 中奇妙的函数–7. String Split 和 Join

    很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列. 很多人都知道使用split()的方法,但使用与其对应的Join ...

  7. Unity大中华区主办 第二届Unity 游戏及应用大赛 实力派精品手游盘点

    Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎.包含如今时 ...

  8. MVC理解

    1:MVC 中的@是什么意思?   类似于<% %>只不过它没有闭合的,这是MVC3.0的新特性2:关于ASP.NET MVC的Html.BeginForm()方法Html.BeginFo ...

  9. Linux解决xhost: unable to open display

    实用技巧:在Linux下设置xhost方法步骤 第一步:用root登陆linux,启动vnc服务: 第二步:根据vnc起来的端口,设置export DISPLAY=localhost:1(1表示vnc ...

  10. JAVA反射系列之Field,java.lang.reflect.Field使用获取方法

    JAVA反射系列之Field,java.lang.reflect.Field使用获取方法.   转载https://my.oschina.net/u/1407116/blog/209383 摘要 ja ...