Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息。

零用钱里网络请求使用的便是这种异步网络请求,查阅了一些资料做了总结。

android-async-http 开源框架可以使我们轻松地获取网络数据或者向服务器发送数据,最关键的是,它是异步框架,在底层使用线程池处理并发请求,效率很高,使用又特别简单。

以往我们在安卓上做项目,比如要下载很多图片、网页或者其他的资源,多数开发者会选择一个线程一个下载任务这种模型,因为安卓自带的 AndroidHttpClient 或者 java 带的 java.net.URL ,默认都是阻塞式操作。这种模型效率不高,对并发要求高的 APP 来讲,并不适用。

AsyncHttpClient 作为 android-async-http 框架的一个核心应用类,使用简单,可以处理文本、二进制等各种格式的 web 资源。下面

AsyncHttpClient, RequestParams ,AsyncHttpResponseHandler三个类使用方法

AsyncHttpClient

public class AsyncHttpClient extends java.lang.Object

该类通常用在android应用程序中创建异步GET, POST, PUT和DELETE HTTP请求,请求参数通过RequestParams实例创建,响应通过重写匿名内部类 ResponseHandlerInterface的方法处理。

AsyncHttpClient client = new AsyncHttpClient(true, HostConstant.getHttpPort(), HostConstant.getHttpsPort());

请求方法
1. AsyncHttpClient.post(arg0,arg1,arg2);
2. AsyncHttpClient.get(arg0,arg1,arg2);

arg0:是你post请求的url

arg1:是要发送给服务器的数据 ,他是

RequestParams

public class RequestParams extends java.lang.Object
用于创建AsyncHttpClient实例中的请求参数

RequestParams params = new RequestParams();  params.put("username", "xiaowen");  params.put("password", "123456");  

AsyncHttpResponseHandler

用于拦截和处理由AsyncHttpClient创建的请求。

    AsyncHttpResponseHandler handler = new AsyncHttpResponseHandler() {        @Override        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {        }        @Override        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {        }    };

onFailure() 如果请求失败了,就会执行该方法,其余方法就都不执行了,用于提示用户网络出现故障
onSuccess() 是请求成功后,服务器就会返回statusCode,headers以及responseBody,通过判断statusCode和解析respinseBody来获取网络返回数据

查看该类的源代码还包括onStart(),onFinish(),onRetry等方法。
onStart()方法是开始发送请求的时候执行的,一般是把progressDialog放在这里面显示,提示用户等待
onFinish() 当发送请求成功后,就执行onFinish()

零用钱网络请求代码分析

1.请求处理:

PMHttpResponseHandler handler = new PMHttpResponseHandler() {            @Override            public void onRequestCompletion(Map responseMap, Object tag) {                       }            @Override            public Object getRequestName() {            }            @Override            public PMRequestQueue.Request getRequest() {            }        };       

PMHttpResponseHandler是AsyncHttpResponseHandler的子类,在PMHttpResponseHandler中包含抽象方法onRequestCompletion(), getRequestName() , getRequest(),并且实现了父类的 onSuccess()onFailure()方法

2.发送请求:

PMNetworkKit.getInstance(handler).post(url,param);

更多相关文章

  1. Android(安卓)View总结
  2. android Edittext输入修改软键盘并关闭软键盘
  3. Android之view虚线
  4. Android(安卓)App Widget中如何调用RemoteView中的函数
  5. Android(安卓)ActionBar的源代码分析(一)
  6. Android中获取网络图片的三种方法
  7. SimpleCropView 裁剪图片
  8. Android调用系统自带的设置界面
  9. Android(安卓)Kotlin 开发--偶遇Rxjava、Retrofit进行网络请求

随机推荐

  1. Android(安卓)屏幕旋转 处理 AsyncTask
  2. Android: NDK编程入门笔记
  3. Android(安卓)Studio 模板(Template)定制
  4. 两分钟彻底让你明白Android中onIntercept
  5. android:scrollbarStyle属性及滚动条和分
  6. RelativeLayout各个属性
  7. Android四种常用布局
  8. Android(安卓)在 LinearLayout 添加分割
  9. 实时Android语音对讲系统架构
  10. StevGuo系列文章翻译之Android电源管理