介绍:

Android-Async-Http是一个Android的开源网络请求类库。官方项目地址:http://loopj.com/android-async-http/。网络请求无非就是从服务器上获取数据,往服务器上上传数据,这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,不会阻塞主UI线程,并且通过回调方法处理请求结果。Android-Async-Http处理正常的获取内容,下载,上传,包括带cookies访问都是没有问题的,大名鼎鼎的Instagram就是用的这个类库。

使用:

从官网下载依赖jar包,导入工程中libs文件夹下并添加到工程路径即可。

先看一下基本用法

AsyncHttpClient client = new AsyncHttpClient();client.get("http://www.google.com", new AsyncHttpResponseHandler() {    @Override    public void onStart() {        // called before request is started    }    @Override    public void onSuccess(int statusCode, Header[] headers, byte[] response) {        // called when response HTTP status is "200 OK"    }    @Override    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {        // called when response HTTP status is "4XX" (eg. 401, 403, 404)    }    @Override    public void onRetry(int retryNo) {        // called when request is retried}});
可以看出,所有的网络请求都是通过AsyncHttpClient实例来实现的。

类库的目录结构如图:

先看下主要的类的介绍:

  • AsyncHttpClient:异步请求客户端,类库进行网络请求的实例
  • AsyncHttpRequest:继承Runnabler,被submit至线程池执行网络请求并发送start,success等消息
  • AsyncHttpResponseHandler:处理网络请求成功 失败 开始 完成 等自定义的消息
  • BaseJsonHttpResponseHandler:继承TextHttpResponseHandler,是一个泛型类,提供了parseResponse方法,子类需要提供实现,将请求结果解析成需要的类型。
  • BinaryHttpResponseHandler :继承 AsyncHttpResponseHandler ,字节流返回处理 该库用于处理图片等
  • JsonHttpResponseHandler:继承TextHttpResponseHandler,同样是重写onSuccess和onFailure方法,将请求结果由String转换为JSONObject或JSONArray
  • SerializableCookie:集成 Serializable,用于序列化cookie,以便存取cookie
  • TextHttpResponseHandler:继承AsyncHttpResponseHandler,重写了AsyncHttpResponseHandler的onSuccess和onFailure方法,将请求结果由byte数组转换为String

官方建议使用一个静态的AsyncHttpClient,官方示例:

public class TwitterRestClient {  private static final String BASE_URL = "http://api.twitter.com/1/";  private static AsyncHttpClient client = new AsyncHttpClient();  public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {      client.get(getAbsoluteUrl(url), params, responseHandler);  }  public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {      client.post(getAbsoluteUrl(url), params, responseHandler);  }  private static String getAbsoluteUrl(String relativeUrl) {      return BASE_URL + relativeUrl;  }}
在用的时候,我们可以直接通过类名调用需要的请求方法,你可以多封装一些不同的请求方法,比如参数不同的方法,下载方法,上传方法等。

这是我自己的封装好的一些常用的方法:

public class HttpUtil {private static AsyncHttpClient httpclient = new AsyncHttpClient();static{httpclient.setTimeout(5000);}public static void get(String urlString,AsyncHttpResponseHandler res)    //用一个完整url获取一个string对象    {httpclient.get(urlString, res);    }    public static void get(String urlString,RequestParams params,AsyncHttpResponseHandler res)   //url里面带参数    {    httpclient.get(urlString, params,res);    }    public static void get(String urlString,JsonHttpResponseHandler res)   //不带参数,获取json对象或者数组    {    httpclient.get(urlString, res);    }    public static void get(String urlString,RequestParams params,JsonHttpResponseHandler res)   //带参数,获取json对象或者数组    {    httpclient.get(urlString, params,res);    }    public static void get(String uString, BinaryHttpResponseHandler bHandler)   //下载数据使用,会返回byte数据    {    httpclient.get(uString, bHandler);    }    public static void post(String uString,RequestParams params, JsonHttpResponseHandler bHandler)   //post数据使用,会返回json数据    {    httpclient.post(uString,params,bHandler);    }    public static void post(String uString,RequestParams params,AsyncHttpResponseHandler res)  //post数据使用,返回普通的手    {    httpclient.post(uString, params,res);    }    public static AsyncHttpClient getClient()    {        return httpclient;    }}

更多相关文章

  1. android 之Fragment相关
  2. Android下PM命令常见使用方法
  3. Android(安卓)教你一步步搭建MVP+Retrofit+RxJava网络请求框架
  4. Android7.0以上动态权限申请 使用RxPermissions框架,让申请权限更
  5. Android判断是否有可用网络的代码
  6. android网络与通信(三种网络接口简述 )
  7. Android(安卓)Studio增量更新方法
  8. Android中与外部进程通信和调用外部程序
  9. 秒懂Android(安卓)Studio的奇技淫巧

随机推荐

  1. android 自定义商城app价格正序倒序控件
  2. android 9.0 在rk3326平台上hidl的使用
  3. android 弹出框(输入框和选择框)
  4. [android]为程序创建快捷方式
  5. 【Android】 ProcessBuild Process su 命
  6. Android电池电量更新 - BatteryService(转
  7. Android(安卓)调用系统相机拍照的返回结
  8. Android遍历某个文件夹的图片并实现滑动
  9. android apk 破解
  10. android 分享功能