异步方式发起Http请求,可以使用匿名回调函数处理网络应答;
在UI主线程之外的工作线程发起Http请求;
通过使用线程池解决了资源并发的效率问题;
通过使用RequestParams类,可完成GET/POST的参数构建;
支持文件的分段下载功能;
支持上传JSON数据流;
对重定向循环、重定向相对路径异常进行了处理
代码体积小,全部功能只占90kb;
专门针对移动网络的不稳定性,对请求重发进行了优化,实现了自动智能处理;
传输时支持数据压缩,可自动对应答进行gzip解压处理;
使用BinaryHttpResponseHandler,可进行较底层的tcp/ip协议数据通信;
JsonHttpResponseHandler内嵌JSON语法分析功能,可完成JSON数据解析;
FileAsyncHttpResponseHandler可直接将应答保存到本地文件中;
支持cookie的持久化,可使用App的SharedPreferences保存cookie信息;
通过BaseJsonHttpResponseHandler可与Jackson JSON, Gson等第三方JSON框架库集成;
SaxAsyncHttpResponseHandler支持SAX语法分析
除了UTF-8,还支持其它语言编码。
使用PersistentCookieStore进行Cookie的持久化存储
async-http-client库包含一个PersistentCookieStore类,这个类实现了CookieStore接口(源自Apache HttpClient包),可自动将cookie信息保存到应用的SharedPreferences储存中。
如果你的应用需要使用cookie维护用户授权session,这是非常有用,方便的。即使关闭了app或重新启动app,应用也可以保持用户已登录的状态。
首先创建一个AsyncHttpClient实例:
AsyncHttpClient myClient = new AsyncHttpClient();
为这个实例设置一个新建的PersistentCookieStore的实例以进行cookie存储,调用这个PersistentCookieStore实例的构造函数时,使用一个activity或application context作参数(一般用this就可以了):
PersistentCookieStore myCookieStore = new PersistentCookieStore(this);
myClient.setCookieStore(myCookieStore);
这样由服务端接收到的cookie将会自动存储在你的android设备上。如果要添加自己的cookie,只需要构建一个新的cookie并调用addCookie函数:
BasicClientCookie newCookie = new BasicClientCookie("cookiesare", "awesome");
newCookie.setVersion(1);
newCookie.setDomain("mydomain.com");
newCookie.setPath("/");
myCookieStore.addCookie(newCookie);