在Android开发中,与服务器通讯主要是基于Http协议来进行的.Android自己为我们提供了URLHttpConnection类来处理网络访问的问题,但是这个类的确不是很好用.今天简绍一个在Android开发中被使用的非常广泛的一个专门针对Android 的网络编程这一块的一个框架.Android-async-http.

项目的官方网站:http://loopj.com/android-async-http/, 对应的github地址:https://github.com/loopj/android-async-http
它是专门针对Android在Apache的HttpClient基础上构建的异步的callback-based http client。
所有的请求全在UI线程之外发生,而callback发生在创建它的线程中,应用了Android的Handler发送消息机制。
你也可以把AsyncHttpClient应用在Service中或者后台线程中,库代码会自动识别出它所运行的context。
它的feature包括:   1. 发送异步http请求,在匿名callback对象中处理response;   2. http请求发生在UI线程之外;   3. 内部采用线程池来处理并发请求;   4. GET/POST 参数构造,通过RequestParams类。   5. 内置多部分文件上传,不需要第三方库支持;   6. 流式Json上传,不需要额外的库;   7. 能处理环行和相对重定向;   8. 和你的app大小相比来说,库的size很小,所有的一切只有90kb;   9. 自动智能的请求重试机制在各种各样的移动连接环境中;   10. 自动的gzip响应解码;   11. 内置多种形式的响应解析,有原生的字节流,string,json对象,甚至可以将response写到文件中;   12. 永久的cookie保存,内部实现用的是Android的SharedPreferences;   13. 通过BaseJsonHttpResponseHandler和各种json库集成;   14. 支持SAX解析器;   15. 支持各种语言和content编码,不仅仅是UTF-8。
官方建议使用一个静态的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;
    }
}
总结:

Android-Async-Http的使用非常简单,通过AsyncHttpClient发起请求就可以了,如果需要添加参数,直接传一个RequestParams过去,而且参数可以是String、File和InputStream,可以很方便地上传文件。

每个请求都需要传一个ResponseHandlerInterface的实例用以接收请求结果或请求失败,请求结束等通知,一般是AsyncHttpResponseHandler的子类。

通过BinaryHttpResponseHandler可以发起二进制请求,如请求图片。

通过TextHttpResponseHandler可以发起返回结果为字符串的请求,一般这个使用较多。



更多相关文章

  1. android UI线程向子线程发送Message
  2. Android的子线程能更新UI吗?
  3. android 线程大集合
  4. Android开发艺术探索—— 第十一章Android的线程和线程池
  5. 无废话Android之smartimageview使用、android多线程下载、显式意
  6. android,handler实现两个线程通信

随机推荐

  1. android中的目录结构介绍
  2. android运行时ART加载OAT文件解析
  3. 教你快速高效接入SDK——iOS多渠道自动打
  4. 将Unity3D项目导出到Android工程中二次开
  5. 顛覆性的傳輸功能:Android Beam
  6. 【Android】Android内存机制,了解Android
  7. 如何在代码中为组件设置dip,sp值
  8. Android(安卓)ListView分页加载(服务端+an
  9. 又一部承諾會升上 Ice Cream Sandwich 的
  10. Motorola & Android系统