• Andorid Async-HttpClient阅览


    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) ;
    		}
    	} ;	
    }


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    datalist的用法
    SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
    js
    回调机制
    JS原型链
    多线程请求乌云链接
    Python高频技巧总结[基础篇]
    批量文本读取URL获取正常访问且保留对应IP
    Django基础之视图
    Django框架简介
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4856124.html
Copyright © 2020-2023  润新知