HTTP网络通信--Android--async-http框架库
来源:互联网 发布:反转链表 java 编辑:程序博客网 时间:2024/05/18 05:34
开源项目链接
android-async-http仓库:git clone https://github.com/loopj/android-async-http
android-async-http主页:http://loopj.com/android-async-http/
背景知识
开始使用分析前还是先了解下Android的HTTP一些过往趣事:
关于Android HTTP推荐的Google官方链接
HttpClient拥有众多的API,实现稳定,bug很少。
HttpURLConnection是一种多用途、轻量的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。HttpURLConnection的API比较简单、扩展容易。不过在Android 2.2版本之前,HttpURLConnection一直存在着一些bug。
比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效了。所以说2.2之前推荐使用HttpClient,2.2之后推荐HttpURLConnection。
好了,那现在话又说回来,在android-async-http中使用的是HttpClient。哎…好像在Volley中分析过Volley对不同版本进行了判断,所以针对不同版本分别使用了HttpClient和HttpURLConnection。还是google牛逼啊!
回过神继续android-async-http吧,不瞎扯了。android-async-http是专门针对Android在Apache的HttpClient基础上构建的异步http连接。所有的请求全在UI(主)线程之外执行,而callback使用了Android的Handler发送消息机制在创建它的线程中执行。
类似Volley一样,使用一个优秀框架之前就是必须得先知道他的特性,如下就是android-async-http的特性:
发送异步http请求,在匿名callback对象中处理response信息;
http请求发生在UI(主)线程之外的异步线程中;
内部采用线程池来处理并发请求;
通过RequestParams类构造GET/POST;
内置多部分文件上传,不需要第三方库支持;
流式Json上传,不需要额外的库;
能处理环行和相对重定向;
和你的app大小相比来说,库的size很小,所有的一切只有90kb;
在各种各样的移动连接环境中具备自动智能请求重试机制;
自动的gzip响应解码;
内置多种形式的响应解析,有原生的字节流,string,json对象,甚至可以将response写到文件中;
永久的cookie保存,内部实现用的是Android的SharedPreferences;
通过BaseJsonHttpResponseHandler和各种json库集成;
支持SAX解析器;
支持各种语言和content编码,不仅仅是UTF-8;
整体操作流程
android-async-http最简单基础的使用只需如下步骤:
创建一个AsyncHttpClient;
(可选的)通过RequestParams对象设置请求参数;
调用AsyncHttpClient的某个get方法,传递你需要的(成功和失败时)callback接口实现,一般都是匿名内部类,实现了AsyncHttpResponseHandler,类库自己也提供许多现成的response handler,你一般不需要自己创建。
AsyncHttpClient与AsyncHttpResponseHandler基础GET体验
AsyncHttpClient类通常用在android应用程序中创建异步GET, POST, PUT和DELETE HTTP请求,请求参数通过RequestParams实例创建,响应通过重写匿名内部类ResponseHandlerInterface方法处理。
如下代码展示了使用AsyncHttpClient与AsyncHttpResponseHandler的基础操作:
官方推荐AsyncHttpClient静态实例化的封装
注意:官方推荐使用一个静态的AsyncHttpClient,官方示例代码如下:
通过官方这个推荐例子可以发现,我们在用时可以直接通过类名调用需要的请求方法。所以我们可以自己多封装一些不同的请求方法,比如参数不同的方法,下载方法,上传方法等。
RequestParams的基础使用
JsonHttpResponseHandler带Json参数的POST
BinaryHttpResponseHandler下载文件
RequestParams上传文件
PersistentCookieStore持久化存储cookie
官方文档里说PersistentCookieStore类用于实现Apache HttpClient的CookieStore接口,可自动将cookie保存到Android设备的SharedPreferences中,如果你打算使用cookie来管理验证会话,这个非常有用,因为用户可以保持登录状态,不管关闭还是重新打开你的app。
文档里介绍了持久化Cookie的步骤:
创建 AsyncHttpClient实例对象;
将客户端的cookie保存到PersistentCookieStore实例对象,带有activity或者应用程序context的构造方法;
任何从服务器端获取的cookie都会持久化存储到myCookieStore中,添加一个cookie到存储中,只需要构造一个新的cookie对象,并且调用addCookie方法;
下面这个例子就是铁证:
总结性的唠叨几句
AsyncHttpResponseHandler是一个请求返回处理、成功、失败、开始、完成等自定义的消息的类,如上第一个基础例子中所示。
BinaryHttpResponseHandler是继承AsyncHttpResponseHandler的子类,这是一个字节流返回处理的类,用于处理图片等类。
JsonHttpResponseHandler是继承AsyncHttpResponseHandler的子类,这是一个json请求返回处理服务器与客户端用json交流时使用的类。
AsyncHttpRequest继承自Runnable,是基于线程的子类,用于异步请求类, 通过AsyncHttpResponseHandler回调。
PersistentCookieStore继承自CookieStore,是一个基于CookieStore的子类, 使用HttpClient处理数据,并且使用cookie持久性存储接口。
- HTTP网络通信--Android--async-http框架库
- Android网络通信请求框架—Android-async-http
- Android 网络框架 android-async-http
- Android网络请求框架android-async-http
- android网络框架android-async-http
- Android 网络框架:android-async-http
- Android 网络框架:android-async-http
- android-async-http(http通信)
- android-async-http网络框架的使用
- 项目网络框架android-async-http分析
- android-async-http框架
- android-async-http框架
- Android基于http的网络请求async-http框架
- Android网络请求库 android-async-http
- Android网络通信之android-async-http入门
- android-async-http框架库使用基础
- android-async-http框架库源码走读
- android-async-http框架库使用基础
- 2017.8.9测试 题一 17倍
- NOIP2015-Junior_sum_Solve.md
- WINDOWS系统电源管理:休眠,睡眠,待机,关机
- Java集合类List、Set、Map
- linux命令--查看文件文件命令(more、cat、less)
- HTTP网络通信--Android--async-http框架库
- P2525 Uim的情人节礼物·其之壱
- HDU 4135 Co-prime (容斥)
- unity shader学习 简单的顶点-片段 shader
- php 获取表单中的内容
- PAT甲级 1064. Complete Binary Search Tree (30)
- NOIP2016-Senior_problem_Solve.md
- 简单对话框1
- 9月6日学习记录