`
桥下一粒砂
  • 浏览: 209641 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【Android + Java】简便的异步Http连接框架

阅读更多
【Android + Java】简便的异步Http连接框架

源代码地址https://github.com/chenyoca/async-http-connection


* 一个多线程异步Http连接框架。它可用于Android项目或者一般Java项目。

## 特点

  •   **简单** Async Http Connection为简单的Http连接请求而设计,提供POST和GET两个接口。通过参数和回调接口完成整个Http连接的交互。
  • **轻量** 纯JDK实现,不依赖第三方Jar包。
  • **快速** 采用Executor多线程并发框架,秉承它的并发处理优势。
  • **可扩展** 框架提供Invoker扩展,通过实现RequestInvoker可方便的把HttpClient等优秀框架整合到项目中。


## 使用

更多例子见源目录的**[test]**目录

### 简单的例子

//使用Get方法,取得服务端响应流:
AsyncHttpConnection http = AsyncHttpConnection.getInstance();
ParamsWrapper params = ...;
String url = ...
int requestId = http.get(url, null, new ResponseCallback() {
	
	@Override
	public void onResponse(InputStream response,URL url) {
		System.out.println("[test GET] --> response back, url = "+url);
		Assert.assertNotNull(response);
		requestBack();
	}
	
	@Override
	public void onError(Throwable exp) {
		System.err.println("[test GET] --> response error, url = "+url);
		requestBack();
	}

	@Override
	public void onSubmit(URL url) {
	}
});



//使用POST方法,取得服务端响应流:
AsyncHttpConnection http = AsyncHttpConnection.getInstance();
ParamsWrapper params = ...;
String url = ...
int requestId = http.post(url, null, new ResponseCallback() {
	
	@Override
	public void onResponse(InputStream response,URL url) {
		System.out.println("[test POST] --> response back, url = "+url);
		Assert.assertNotNull(response);
		requestBack();
	}
	
	@Override
	public void onError(Throwable exp) {
		System.err.println("[test POST] --> response error, url = "+url);
		requestBack();
	}

	@Override
	public void onSubmit(URL url) {
	}
});


### 更详细的例子

//使用POST方法,取得服务端响应流:
AsyncHttpConnection http = AsyncHttpConnection.getInstance();
final int KEY_VAL = 24;
ParamsWrapper params = new ParamsWrapper();
params.put("firstname", "chen");
params.put("lastname", "yoca");
params.put("foo", KEY_VAL);
params.put("cookiename", KEY_VAL);
params.put("cookievalue", KEY_VAL);
int requestId = http.post(url, params, new StringResponseHandler() {

	@Override
	public void onSubmit(URL url) { 
		System.out.println(">> target: "+url.getHost()+" --> "+url.getPath());
	}

	@Override
	public void onError(Throwable exp) {
		requestBack();
		exp.printStackTrace();
	}

	@Override
	public void onResponse(String content, URL url) {
		Assert.assertNotNull(content);
		boolean containsKey = content.contains(String.valueOf(KEY_VAL));
		Assert.assertEquals(true, containsKey);
		requestBack();
	}
});



//在大量并发的异步请求情况下,每个请求的回调可能需要一个标识码来标记这个回调结果。
//有两种方式来解决这个问题:
// 1、使用get和post返回的RequestID来标识,但这需要对RequestID进行管理
// 2、使用get和post的token参数

AsyncHttpConnection http = AsyncHttpConnection.getInstance();
final int KEY_VAL = 24;
ParamsWrapper params = new ParamsWrapper();
params.put("firstname", "chen");
params.put("lastname", "yoca");
params.put("foo", KEY_VAL);
params.put("cookiename", KEY_VAL);
params.put("cookievalue", KEY_VAL);

//  ******** 利用token 接口 ************
Object token = "1234566";

// 如果调用了带token的方法,回调的方法将是onResponse(String content, URL url, Object token)
int requestId = http.post(url, params, token, new StringResponseHandler() {

	@Override
	public void onSubmit(URL url) { 
		System.out.println(">> target: "+url.getHost()+" --> "+url.getPath());
	}

	@Override
	public void onError(Throwable exp) {
		requestBack();
		exp.printStackTrace();
	}

	@Override
	public void onResponse(String content, URL url, Object token) {
		// token == "1234566" Token被传到这里作为标识
		Assert.assertNotNull(content);
		boolean containsKey = content.contains(String.valueOf(KEY_VAL));
		Assert.assertEquals(true, containsKey);
		requestBack();
	}
});

1
0
分享到:
评论

相关推荐

    android的spring框架

    在Android开发中,Spring框架可能并不像在Java服务器端那样被广泛熟知,但它确实为移动应用提供了一套强大的工具集。Spring for Android是Spring.io针对Android平台推出的一个框架,旨在帮助开发者构建高质量、可...

    Android-异步图片加载器

    "Android-异步图片加载器"就是为了解决这个问题而设计的框架。它优化了原生的`AsyncTask`,使得图片加载更加流畅,同时降低了开发者的学习和使用难度。 1. **异步加载原理**: - 异步加载是一种将耗时操作放在后台...

    Android 极速开发框架 dhroid

    【Android 极速开发框架 dhroid】是一种专为Android应用开发者设计的高效开发工具,旨在简化和加速Android应用的开发过程。它集成了多种最佳实践和常见功能模块,以提高开发效率并降低项目的复杂性。dhroid框架的...

    java开源包4

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    android网络访问框架NiceDayFramework

    1. 请求构造:框架提供了一系列简便的API,帮助开发者构建HTTP请求,包括GET、POST、PUT、DELETE等各种HTTP方法,同时支持添加请求头、参数等。 2. 响应处理:框架对HttpClient的响应进行了封装,开发者可以通过...

    java开源包6

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    java开源包101

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    java开源包9

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    java开源包1

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    java开源包8

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    java开源包5

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    java开源包10

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    android基本框架类

    本知识点将深入探讨“android基本框架类”,重点围绕Volley和Universal Image Loader两个库进行封装及其使用方法。 Volley是Google推荐的一款强大的网络请求库,它以其高效的缓存机制、线程管理以及对JSON数据的...

    java开源包3

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    Java资源包01

    一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-...

    android端用于异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画。.zip

    这种动画效果可以使用Android的Animation框架实现,例如AlphaAnimation,通过改变View的透明度来实现。也可以使用现代的Transition API,或者借助第三方库如Glide的动画集成,更简便地实现这一功能。 这个项目源码...

    Android轻量级sqlite orm框架-IT计算机-毕业设计.zip

    ORM框架通常提供简便的方法来执行这些操作,无需直接编写SQL语句。 6. **异步数据库操作**:Android应用程序通常在UI线程之外执行数据库操作,以避免阻塞主线程。你可以使用AsyncTask、IntentService或Android的...

    安卓拍照上传录像监控录屏相关-android录音上传到服务器上传使用AsyncTask异步任务.rar

    Android中的`AsyncTask`是一种轻量级的异步任务处理框架,适用于执行短时、后台操作,如网络上传。在这个场景下,`AsyncTask`可以在后台线程中执行文件上传,避免阻塞UI线程,提高用户体验。它包含三个泛型参数:`...

    Android UI组件实例集合

    是一个Android的ui开发类库,能够使你的Android开发更加简便和快捷。 11、Android滑动式菜单 SlidingMenu 是 Android 上实现类似 Facebook 和 Path 2.0 滑动式菜单的组件。 12、AsyncImageView 是 Android 上的一...

    Android数据库框架LitePal学习

    LitePal是一个轻量级的数据库框架,它使得在Android应用中操作SQLite数据库变得更加简便。这个框架基于Active Record模式,简化了数据库的CRUD(创建、读取、更新、删除)操作,大大提高了开发效率。下面将详细探讨...

Global site tag (gtag.js) - Google Analytics