AsyncHttpClient 获取图片和网页数据演示

AsyncHttpClient 极其好用,采用回调的方式并且是异步的,UI线程已经封装好。 https://github.com/loopj/android-async-http

这个例子较为简单。

先看运行结果

点击按钮 从网络上获取图片和baidu首页显示出来.

项目是直接用的源码,为了研究源码使用的。

public class HTTPHelper {

	public HTTPHelper() {
	}

	public void get(String url,ResponseHandlerInterface callback){
		AsyncHttpClient  client = new AsyncHttpClient();
		client.get(url,callback);
	}

}
public class MyActivity extends Activity  {

	final static String TAG = MyActivity.class.getCanonicalName();
	private final static String URL = "http://www.baidu.com";
	private final static String IMAGE_URL = "http://preview.quanjing.com/glow_foto001/gcr211129740.jpg";//图片资源
	private WebView webView;
	private ImageView imageView;
	private HTTPHelper helper;

	public MyActivity() {
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}

	private void initView() {
		webView = (WebView) findViewById(R.id.webview);
		imageView = (ImageView) findViewById(R.id.img);
		helper = new HTTPHelper();
		findViewById(R.id.btn_http_get).setOnClickListener(
				new OnClickListener() {
					public void onClick(View view) {
						helper.get(URL, textCallback);//获取文本
					}
				});

		findViewById(R.id.btn_http_get_img).setOnClickListener(
				new OnClickListener() {
					public void onClick(View view) {
						helper.get(IMAGE_URL, binaryCallback);//获取图片
					}
				});
	}

	// 获取图片流
	BinaryHttpResponseHandler binaryCallback = new BinaryHttpResponseHandler() {
		@Override
		public void onSuccess(int statusCode, Header[] headers,
				byte[] binaryData) {
			Log.d(TAG, "onSuccess:" + statusCode + " binaryData:"
					+ binaryData.length);
			MyActivity.this.updateImage(binaryData);
		}

		@Override
		public void onFailure(int statusCode, Header[] headers,
				byte[] binaryData, Throwable error) {
			Log.e(TAG, "onFailure:" + error + " statusCode:" + statusCode);

		}
	};

	// 获取文本流
	TextHttpResponseHandler textCallback = new TextHttpResponseHandler() {

		@Override
		public void onFailure(int statusCode, Header[] headers,
				String responseString, Throwable throwable) {
			Log.e(TAG, "onFailure:" + throwable + " statusCode:" + statusCode);
		}

		@Override
		public void onSuccess(int statusCode, Header[] headers,
				String responseString) {
			Log.d(TAG, "onSuccess:" + statusCode + " responseString:"
					+ responseString.length());
			MyActivity.this.updateWebView(responseString);
		}

	};

	public void updateImage(byte[] data) {
		Bitmap b = BitmapFactory.decodeByteArray(data, 0, data.length);
		imageView.setImageBitmap(b);
	}

	public void updateWebView(String data) {
		webView.getSettings().setJavaScriptEnabled(true);
		webView.getSettings().setDefaultTextEncodingName("UTF -8");
		webView.loadData(data, "text/html; charset=UTF-8", null);
	}

}

BinaryHttpResponseHandler 是Binary的请求回调,用在获取图片比较合适

TextHttpResponseHandler 是字符串文本类的请求回调,它的子类还有json获取的回调接口

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_http_get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="http get text" />

    <Button
        android:id="@+id/btn_http_get_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="http get image" />

    <WebView
        android:layout_marginTop="5dp"
        android:layout_width="fill_parent"
        android:layout_height="240dp"
        android:id="@+id/webview"
        />

    <ImageView
        android:id="@+id/img"
         android:layout_marginTop="5dp"
        android:layout_width="200dp"
        android:layout_height="150dp"
        android:scaleType="fitCenter" />

</LinearLayout>

That‘s all right~

时间: 2024-10-13 23:26:16

AsyncHttpClient 获取图片和网页数据演示的相关文章

[转]js动态获取图片长宽尺寸

http://blog.phpdr.net/js-get-image-size.html lightbox类效果为了让图片居中显示而使用预加载,需要等待完全加载完毕才能显示,体验不佳(如filick相册的全屏效果).javascript无法获取img文件头数据,真的是这样吗?本文通过一个巧妙的方法让javascript获取它. 这是大部分人使用预加载获取图片大小的例子: 01 var imgLoad = function (url, callback) { 02     var img = ne

转载:js动态获取图片长宽尺寸(兼容所有浏览器,速度极快)

转自:http://blog.phpdr.net/js-get-image-size.html lightbox类效果为了让图片居中显示而使用预加载,需要等待完全加载完毕才能显示,体验不佳(如filick相册的全屏效果).javascript无法获取img文件头数据,真的是这样吗?本文通过一个巧妙的方法让javascript获取它. 这是大部分人使用预加载获取图片大小的例子: 01 var imgLoad = function (url, callback) { 02     var img =

Android登录客户端,验证码的获取,网页数据抓取与解析,HttpWatch基本使用

大家好,我是M1ko.在互联网时代的今天,如果一个App不接入互联网,那么这个App一定不会有长时间的生命周期,因此Android网络编程是每一个Android开发者必备的技能,博主是在校大学生,自学Android一年半多,正好通过一个模拟登录校园网软件,来给大家演示如何在网页上抓取我们想要的数据,以及将数据Post给服务器.如果有什么错误或改进欢迎大家指正=-= ,如果想交流博主qq 136057505 好的废话不多说看一下我们的重点 Httpwatch等软件抓取Post请求 如何获取验证码

盘点用Java抓取HTTP服务器和FTP服务器的网页数据或图片等数据的实用技巧

摘要 在信息时代,常常需要通过编程的方式来灵活整理各种网络数据.首先涉及到如何方便准确地抓取网络数据.下面盘点用Java程序来访问HTTP服务器以及FTP服务器的各种实用技巧.主要介绍了Java Socket.java.net.URL类.Selenuim软件包.Apache HttpClients.Apache FTPClient来和HTTP服务器以及FTP服务器通信的方法以及其优缺点. 参考资料 (1)本文参考了笔者所写的<Java网络编程核心技术详解>,2020年上半年出版. (2)Jav

获取网页数据

描述: 将网页数据导入到表格中,在日常工作中经常会用到,此法的好处是省去了手动敲入的时间,如何快速的将网页数据导入到表格中成为了一个焦点问题,下面与大家 分享个比较常用的方法,大概的步骤就是调出新建WEB查询界面,输入网址并转到相应的页面,点击导入,然后等待.....接着设置导入数据的位置单元格, 确定即可.此法只能导入网页文字,图片是无法导入的. 步骤: Step 1:启动Excel2013,单击菜单栏--数据--获取外部数据--自网站. Step 2:弹出新建WEB查询界面,输入网站地址,转

VB中获取网页数据

以下是在Microsoft Visual Basic 6.0 中文版下做的 VB可以抓取网页数据,所用的控件是Inet控件. 第一步:单击工程-->部件 选择Microsoft Internet Transfer Control(SP6)控件. 第二步:布局界面显示 在界面里面拖动相对应的控件. 第三步 编码开始 Option Explicit Private Sub Command1_Click() If Text1.Text = "" Then MsgBox "请输

【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS

地址: http://blog.csdn.net/hujkay作者:Jekkay Hu([email protected])关键词:Windows,curl,ssl,  visual c++ 2005, libcurl, https,网页抓取时间: 2014/2/18 1. 概述 由于Curl提供强大的网络功能,支持HTTP,HTTPS, DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP

pgmagick,pil不保存图片并且获取图片二进制数据记录

PIL和pgmagick都是python中图像处理的库,只不过PIL功能更强大 pgmagick和PIL中对数据进行调整后经常需要调用write或者save方法保存图片,然后在读取图片的内容,这样很麻烦,并且很浪费空间 那如何在不保存图片的情况下获取图片调整后的数据呢 PIL中可以这样 from StringIO import StringIO from PIL import Image img = Image() #do something s = StringIO() img.save(s,

[原创]利用爬虫技术获取网页数据,以及想要的指定数据

最近在公司做个系统,由于要获取网页的一些数据,以及一些网页的数据,所以就写的一个公用的HttpUtils.下面是针对乌云网我写的一个例子. 一.首先是获取指定路径下的网页内容. public static String httpGet(String urlStr, Map<String, String> params) throws Exception { StringBuilder sb = new StringBuilder(); if (null != params &&