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的子类关系例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5kcm9pZF9kb25n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

在实际的开发中建议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) ;
}
} ;
}

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

Andorid Async-HttpClient阅览的更多相关文章

  1. 使用C# HttpWebRequest进行多线程网页提交。Async httpclient/HttpWebRequest实现批量任务的发布及异步提交和超时取消

    使用线程池并发处理request请求及错误重试,使用委托处理UI界面输出. http://www.cnblogs.com/Charltsing/p/httpwebrequest.html for (i ...

  2. Flutter -------- 网络请求之HttpClient

    今天来说说Flutter中的网络请求,HttpClient网络请求,包含get,post get var data; _get() async { Map newTitle; var response ...

  3. dart入门指南

    近来,flutter的热度在上升.flutter应用的主要开发语言是dart, 因此,欲练flutter, 必先了解dart. dart是由google开发的编程语言,可用于开发移动应用,桌面应用,h ...

  4. utilize HttpClient to generate a SSL access and generate REST access to fetch data, async programming? cool and brief

    WebRequestHandler handler = new WebRequestHandler(); try { X509Certificate2 certificate = new X509Ce ...

  5. async & await 的前世今生(Updated)

    async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...

  6. [.NET] 利用 async & await 的异步编程

    利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html  目录 异步编程的简介 异 ...

  7. [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程

    怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html  ...

  8. await and async

    Most people have already heard about the new “async” and “await” functionality coming in Visual Stud ...

  9. ASP.NET 中的 Async/Await 简介

    本文转载自MSDN 作者:Stephen Cleary 原文地址:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx 大多数有关 async ...

随机推荐

  1. GNU C的使用

    基本语法 gcc [options] [filenames]  说明:  在gcc后面可以有多个编译选项,同时进行多个编译操作.很多 的gcc选项包括一个以上的字符.因此你必须为每个选项指定各 自 ...

  2. 通过memcached来实现对tomcat集群中Session的共享策略

    近期在做一套集群的实现,实现的方案是在Linux下完成对Apache + Tomcat 负载均衡的功能. 上述功能已经实现,有需要了解的朋友可以看我另外一篇博文. Linux下Apache与Tomca ...

  3. APPCAN学习笔记001---app高速开发AppCan.cn平台概述

    1.APPCAN学习笔记---app高速开发AppCan.cn平台概述 1. 平台概述 技术qq交流群:JavaDream:251572072 AppCan.cn开发平台是基于HTML5技术的跨平台移 ...

  4. 【C#遗补】之Char.IsDigit和Char.IsNumber的区别

    原文:[C#遗补]之Char.IsDigit和Char.IsNumber的区别 Char中IsDigit和IsNumber的两个方法都是用来判断字符是否是数字的,那他们有什么区别 IsDigit    ...

  5. 【足迹C++primer】30、概要(泛型算法)

    概要(泛型算法) 大多数算法的头文件中定义algorithm在. 标准库也是第一个文件numeric它定义了一套通用算法. #include<iostream> #include<n ...

  6. hdu1828(线段树——矩形周长并)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1828 分析:与面积不同的地方是还要记录竖的边有几个(num记录),并且当边界重合的时候需要合并(用lb ...

  7. mysql事务、触发器、视图、存储过程、函数

    存储过程: procedure 概念类似于函数,就是把一段代码封装起来, 当要执行这一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else, case,while等控 ...

  8. linux--shell script

    下面是最近学习shell script的一些知识点总结 ***博客园-邦邦酱好***   1.介绍shell是一个文字接口,让我们与系统沟通.shell script就是针对shell所写的脚本.它就 ...

  9. UIView详解2

    第三.Configuring the Event-Related Behavior 1.  userInteractionEnabled  property A Boolean value that ...

  10. Java命令参数说明

    Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令 JAVA_HOME"bin"java –option 来启动,-option为虚 ...