博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Andorid Async-HttpClient阅览
阅读量:6941 次
发布时间:2019-06-27

本文共 2008 字,大约阅读时间需要 6 分钟。

Async-httpclient它是一个用于Android应用程序开发http访问开源框架。开源GitHub在,因为今天GitHub下载没有看到。我在这里提供。是之前从GitHub上下载的,版本号是V1.4.5。GitHub上还是有非常多开发者提供了http訪问的封装类,可是个人认为Async-httpclient写的非常不错。所以就总结下该开源包中的代码结构和调用方式。

Async-httpclient开源包中提供http的同步和异步訪问,http的get、post、set、delete等方法。在调用http訪问接口时针对传入不同的回调接口。返回数据也进行了不同的封装,待细致阅读源代码之后,将会明了。

当解开资源包之后,?\library\src\main\java\com\loopj\android\http该文件夹下就是作者写的源代码了,就仅仅有27个类,这里建议将?

\library\src\main\java\文件夹下的文件夹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) ;		}	} ;	}

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

你可能感兴趣的文章
Android-再次解读萤石云视频
查看>>
webpack 代码gzip压缩、注释、警告去除配置,设置缓存
查看>>
Android 实现自定义圆环
查看>>
Xcode实现彩色控制台
查看>>
macOS Sierra 10.12+ 软件提示已损坏,移除到废纸篓的解决方法
查看>>
Istio 庖丁解牛一:组件概览
查看>>
从0带您打造企业级 Vue 服务器渲染 Nuxt.js (一) 入门
查看>>
vue watch数组引发的血案
查看>>
LAMP和LNMP深度优化
查看>>
(三)Python的List和Tuple类型
查看>>
近期面试题整理
查看>>
1.编辑器 - Visual Studio Code
查看>>
MDKAutoLayoutHeight 自动化UITableviewCell高度计算工具
查看>>
JS 事件机制 Event Loop
查看>>
简历上的项目经历怎么写 ?这 3 条原则不可忽视 !
查看>>
Python:鲜为人知的功能特性(下)
查看>>
正则表达式
查看>>
基于python flask编写测试平台系列之·(1)当前项目展示
查看>>
[译] 玩转 JavaScript 面试:何为 Promise ?
查看>>
java B2B2C Springcloud电子商务平台源码 -Feign之源码解析
查看>>