赞
踩
上一篇为大家讲解了如何《基于Retrofit2.0+RxJava+Dragger2实现不一样的Android网络构架搭建》 http://blog.csdn.net/finddreams/article/details/50849385
文中有谈到目前Android开发中使用的比较多的网络框架有android-async-http,Volley,OkHttp等,Retrofit2.0就是基于OkHttp的,各大网络框架都有各自的优点,今天讲的android-async-http的优点就是api调用简单,学习成本低,jar包的体积小等。
android-async-http是一个基于Apache的HttpClient的异步的Android请求框架,所有的请求全在UI(主)线程之外执行,而callback成功失败的回调都是在主线程中执行。
Github地址: https://github.com/loopj/android-async-http
AsyncHttpResponseHandler ——这是一个请求返回处理,成功,失败,开始,完成,等自定义处理请求的类;
BinaryHttpResponseHandler extends AsyncHttpResponseHandler ——继承AsyncHttpResponseHandler的子类,这是一个字节流返回处理的类, 该类用于处理图片,流的形式;
JsonHttpResponseHandler extends AsyncHttpResponseHandler ——继承AsyncHttpResponseHandler的子类,这是一个json请求返回处理服务器与客户端用json交流时使用的类;
AsyncHttpRequest implements Runnable ——基于线程的子类,用于 异步请求类, 通过AsyncHttpResponseHandler回调。
TextHttpResponseHandler 是把字节流转成了字符串文本的形式,方便使用;
PersistentCookieStore implements CookieStore ——这是一个基于CookieStore的子类, 使用SharedPreferences来保存Cookie数据,并具备添加清楚Cookie的功能。
RequestParams 封装了请求参数的类,是键值对的形式,相当于HashMap。有add和put方法,add方法的值只能是String,而put方法的值则可以添加很多的其他数据类型;
1. 引入到咱们的项目中,目前的最新版本是1.4.9,解决了Android6.0以上HttpClient的不兼容问题,请使用最新的版本:
compile 'com.loopj.android:android-async-http:1.4.9'
引入之后我们发现依赖库中不只有android-async-http:1.4.9.jar还多了一个叫httpclient 4.3.6.jar的包,这是什么原因了?
HttpClient和HttpURLConnection都很熟悉了,HttpClient 的API实现起来简单,HttpURLConnection则比较麻烦一点。Android 2.2版本之前因为HttpURLConnection存在一些bug,所以谷歌官方推荐使用HttpClient,但是后来慢慢修正了HttpURLConnection的问题, google 不再维护 HttpClient 了,以致于Android5.1里面已经把 HttpClient 标注为过期。所有Android4.0之后应该用HttpURLConnection来作为网络请求,这个想必大家都已经知道了。
所以为了修复android-async-http这个网络库对于高版本(API大于23)的android系统存在不兼容的问题,他们引入了http client这个开源的网络库,那样就可以继续使用android-async-http在Android上开发了,因为已经兼容了安卓API 23(6.0)和更高的版本,所以大可放心使用。
2.用单例模式封装一下AsyncHttpClient,方便调用管理:
/**
* AsyncHttpClientUtils的单例
*
* @Author finddreams
* @Address http://blog.csdn.net/finddreams
* @Time 2016/3/14
*/
public class AsyncHttpClientUtils {
public static final String TAG = AsyncHttpClientUtils.class.getSimpleName();
public static final int SOCKET_TIMEOUT = 20 * 1000;//默认超时时间
// public static final int DEFAULT_SOCKET_TIMEOUT = 10 * 1000;
private static AsyncHttpClientUtils instance = new AsyncHttpClientUtils();
// 实例话对象
private
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。