android-async-http简介 :
- Android中收集要求一样平常应用Apache HTTP Client或采纳HttpURLConnect,然则间接应用那两个类库须要写大批的代码才干完成收集post战get要求,而应用android-async-http那个库能够大大的简化操。
android-async-http特性:
- 采用异步http请求,并通过匿名内部类处理回调结果
- http请求独立在UI主线程之外
- 采用线程池来处理并发请求
- 采用RequestParams类创建GET/POST参数
- 不需要第三方包即可支持Multipart file文件上传
- 大小只有25kb
- 自动为各种移动电话处理连接断开时请求重连
- 超快的自动gzip响应解码支持
- 使用BinaryHttpResponseHandler类下载二进制文件(如图片)
- 使用JsonHttpResponseHandler类可以自动将响应结果解析为json格式
- 持久化cookie存储,可以将cookie保存到你的应用程序的SharedPreferences中
主要类介绍:
- AsyncHttpRequest:
继承自Runabler,被submit至线程池执行网络请求并发送start,success等消息。
- AsyncHttpResponseHandler:
接收请求结果,一般重写onSuccess及onFailure接收请求成功或失败的消息。
- TextHttpResponseHandler:
继承自AsyncHttpResponseHandler,只是重写了AsyncHttpResponseHandler的onSuccess和onFailure方法,将请求结果由byte数组转换为String。
- JsonHttpResponseHandler:
继承自TextHttpResponseHandler,同样是重写onSuccess和onFailure方法,将请求结果由String转换为JSONObject或JSONArray
- BaseJsonHttpResponseHandler:
继承自TextHttpResponseHandler,是一个泛型类,提供了parseResponse方法,子类需要提供实现,将请求结果解析成需要的类型,子类可以灵活地使用解析方法,可以直接原始解析,使用gson等。
- RequestParams:
请求参数,可以添加普通的字符串参数,并可添加File,InputStream上传文件。
- SyncHttpClient:
继承自AsyncHttpClient,同步执行网络请求,AsyncHttpClient把请求封装成AsyncHttpRequest后提交至线程池,SyncHttpClient把请求封装成AsyncHttpRequest后直接调用它的run方法。
请求流程:
1、调用AsyncHttpClient的get或post等方法发起网络请求。
2、所有的请求都走了sendRequest,在sendRequest中把请求封装为了AsyncHttpRequest,并添加到线程池执行。
3、当请求被执行时(既AsyncHttpRequest的run方法),执行AsyncHttpRequest的makeRequestWithRetries方法执行实际的请求,当请求访问失败时可以重试。并在请求开始,结束,成功或失败的时候请求时传的ResponseHandlerInterface实例发送消息.
4、基本上使用的都是AsyncHttpResponseHandler的子类,调用其onStart,onSuccess等方法返回请求结果。