在前一章中讲的是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);// 如果服务器响应的是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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initWidgets();task = new downloadImageTask();}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.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);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (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> {@Overrideprotected Boolean doInBackground(String... params) {// TODO Auto-generated method stubSystem.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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return true;}// 下载完成回调@Overrideprotected void onPostExecute(Boolean result) {// TODO Auto-generated method stubimage.setImageBitmap(mDownloadImage);System.out.println("result = " + result);super.onPostExecute(result);}// 更新进度回调@Overrideprotected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}}}
如果图片较大可能会下载失败

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


更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. android 使用html5作布局文件: webview跟javascript交互
  6. Android(安卓)Resource介绍和使用
  7. "Failed to fetch URL https://dl-ssl.google.com/android/repos
  8. 使用NetBeans搭建Android开发环境
  9. android 零星调试笔记

随机推荐

  1. Android 获取电池电量
  2. 控件_AnalogClock
  3. Android中RadioGroup RadioButton CheckB
  4. 【Android】Activity与服务Service绑定
  5. android手机短信总结
  6. Head Fisrt Android Development读书笔记
  7. 学习android的博客
  8. Android - 开发常用工具类Utils
  9. Android Studio中的mipmap和drawable
  10. Android 音频降噪 webrtc 去回声