Async-httpclient它是一个用于Android应用程序开发http访问开源框架。开源GitHub在,因为今天GitHub下载没有看到。我在这里提供下载地址。是之前从GitHub上下载的,版本号是V1.4.5。GitHub上还是有非常多开发者提供了http訪问的封装类,可是个人认为Async-httpclient写的非常不错。所以就总结下该开源包中的代码结构和调用方式。
Async-httpclient开源包中提供http的同步和异步訪问,http的get、post、set、delete等方法。在调用http訪问接口时针对传入不同的回调接口。返回数据也进行了不同的封装,待细致阅读源代码之后,将会明了。
当解开资源包之后,?librarysrcmainjavacomloopjandroidhttp该文件夹下就是作者写的源代码了,就仅仅有27个类,这里建议将?
librarysrcmainjava文件夹下的文件夹com拷贝至Androidproject的根文件夹下。并将其设置为“use as source folder”。这样在写调用样例的时候,就能去边看源代码边写代码了。
源代码包中基本的类有
AsyncHttpClient.java异步http訪问类
SyncHttpClient.java同步http訪问类
AsyncHttpRequest.java继承Runnable对象。真实訪问http的线程
ResponseHandlerInterface.javahttp訪问回调接口,有非常多子类,分别对返回数据进行了封装
主要就是这个4大类,其余的还有https的证书自己定义类、http重定向、base64、cookie的保存、http訪问重试次数的设定等等。
这些须要的时候能够加入。
在阅读源代码时,ResponseHandlerInterface的子类众多,体验了一把什么是重载和覆写!
这才是面向对象编程的思想。接下来一个简单的样例能看出使用此开源包的代码之简洁,能够少写非常多不必要的反复代码。
ResponseHandlerInterface的子类关系例如以下:
在实际的开发中建议http訪问实例写成单例。
public class MainActivity extends Activity { private static AsyncHttpClient mHttpClient = new AsyncHttpClient(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getData() ; } public void getData(){ mHttpClient.get("http://www.baidu.com", responseHandler) ; } AsyncHttpResponseHandler responseHandler = new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers,byte[] responseBody) { for(Header header :headers){ Log.e("onSuccess","" + header.getName() + " = " + header.getValue()) ; } Log.e("onSuccess","statusCode = " + statusCode + ", responseBody = " + new String(responseBody)) ; } @Override public void onFailure(int statusCode, Header[] headers,byte[] responseBody, Throwable error) { for(Header header :headers){ Log.e("onFailure","" + header.getName() + " = " + header.getValue()) ; } Log.e("onFailure","statusCode = " + statusCode + " ,responseBody = " + responseBody) ; } } ; }
版权声明:本文博主原创文章。博客,未经同意不得转载。