文档章节

Android使用HttpClient下载图片

moz1q1
 moz1q1
发布于 2015/04/01 08:27
字数 470
阅读 135
收藏 8

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);

		// 如果服务器响应的是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);
		}

	}
}


本文转载自:http://blog.csdn.net/deng0zhaotai/article/details/25477781

moz1q1
粉丝 55
博文 351
码字总数 117569
作品 0
东莞
程序员
私信 提问
android使用HttpClient和URLConnection获取网页内容

今天开始android网络编程,平时做的android整机开发这块,基本上不大需要接触android网络变成这块知识,还是得熟悉熟悉。 本文要讲的是使用URLConnection对象和HttpClient组件访问网络以及获...

幸子
2014/03/27
2.5K
1
Android HttpClient出现org.apache.http.conn.ConnectTimeoutException,导致下载不成功如何解决

在Android 4.0环境下,应用使用HttpClient向服务请求xml数据或者请求图片下载,出现下列异常(请求xml数据部分代码没有给出) 具体下载部分代码如下: HttpClient也设置了超时情况: 请问,这个...

zhoulc
2013/05/15
26.8K
5
HttpClient和HttpURLConnection的区别

Android 提供两个HTTP客户端,分别是HttpURLConnection客户端和Apache的HttpClient,android的AndroidHttpClient是对HttpClient的实现。这两个HTTP客户端都支持HTTPS协议、流媒体的上传和下载...

Callen
2015/08/09
1K
0
android编写访问http的代码

android使用apache httpclient项目实现手机作为http客户端的调用。android使用的是最新的httpclient 4.0版本,网上很多国内的文档是3.x的,调用方式不一样。 httpclient有一个官方教程,见:...

xiahuawuyu
2012/08/06
294
0
Android 使用自带的HttpClient进行https请求出现403的解决过程记录

出现的过程 最近在用程序模拟一个web站的https登录,然后进行一些后续操作的小玩意。先使用java程序写测试代码,测试通过移植到android。 java基于httpclient-4.3.1.jar开发。 android端使用...

atearsan
2014/03/05
6.6K
1

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
10
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
6
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部