android常见框架基本使用之-AsyncHttpClient

来源:互联网 发布:在mac显示隐藏文件 编辑:程序博客网 时间:2024/04/29 10:54

上篇提到Volley的使用,但在实际开发中,会发现android在UI线程以外进行ui操作是会报操作的,查阅资料发现,android解决该问题的方法是异步任务处理或多线程处理的方式

但用过的人都知道,两者都有冗余且较长的代码量,每一次网络请求图片需要开启新线程的话未免也太繁琐了,于是又发现了一个神器的框架AsyncHttpClient


老样子先上github地址:https://github.com/loopj/android-async-http/


1.AsyncHttpClient的特性

  1. 发送异步http请求,在匿名callback对象中处理response信息;

  2. http请求发生在UI(主)线程之外的异步线程中;

  3. 内部采用线程池来处理并发请求;

  4. 通过RequestParams类构造GET/POST;

  5. 内置多部分文件上传,不需要第三方库支持;

  6. 文件很小;

  7. 内置多种形式的响应解析,有原生的字节流,string,json对象,甚至可以将response写到文件中;

  8. 永久的cookie保存,内部实现用的是Android的SharedPreferences;

  9. 通过BaseJsonHttpResponseHandler和各种json库集成;

  10. 支持SAX解析器;

  11. 支持各种语言和content编码,不仅仅是UTF-8;


2.基本使用之官方推荐封装

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


3.基本使用之RequestParams的使用

RequestParams params = new RequestParams();params.put("username", "yanbober");params.put("password", "123456");params.put("email", "yanbobersky@email.com");
//支持文件,常见数据结构的参数上传,读者可自行查阅

4.JsonHttpResponseHandler的使用

client.post(url, params,new JsonHttpResponseHandler(){        @Override        public void onSuccess(JSONObject jsonObject) {            //获取的jsonObject可自行解析        }    });


5.总结

AsyncHttpRequest继承自Runnable,是基于线程的子类,用于异步请求类, 通过AsyncHttpResponseHandler回调。所以可在回调中直接进行UI操作,但长时

间的请求可能会出现一些错误




0 0