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

AsyncHttpConnection是一款用于Android及Java项目的轻量级异步HTTP连接框架。该框架支持GET和POST请求,采用多线程并发处理,易于扩展并整合其他HTTP客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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


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

## 特点

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

## 使用

更多例子见源目录的**[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();
}
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值