简介
LiteHttp是一款简单、智能、灵活的HTTP框架库,它在请求和响应层面做到了全自动构建和解析,主要用于Android快速开发。借助LiteHttp你只需要一行代码即可完美实现http连接,它全面支持GET, POST, PUT, DELETE, HEAD, TRACE, OPTIONS 和 PATCH八种基本类型。LiteHttp能将Java Model转化为http请求参数,也能将响应的json语句智能转化为Java Model,这种全自动解析策略将节省你大量的构建请求、解析响应的时间。并且,你能自己继承重新实现Dataparser这个抽象类并设置给Request,来将http原始的inputstream转化为任何你想要的东西。
功能
-
单线程,所有方法都基于一个线程,绝不会跨线程,多线程的事情交给它自带的AsyncExecutor 或者更专业的框架库来解决。
-
灵活的架构,你可以轻松的替换Json自动化库、参数构建方式甚至默认的apache http client连接方式。
-
轻量级,微小的的开销,core jar包仅约86kb。
- 多种请求类型全面支持:get, post, head, put, delete, trace, options, patch.
-
多文件上传,不需要额外的类库支持。
- 内置的Dataparser支持文件和位图下载,你也可以自由的扩展DataParser来把原始的http inputstream转化为你想要的东西。
- 基于json的全自动对象转化: 框架帮你完成Java Object Model 和 Http Parameter之间的转化,完成Http Response与Java Object Model的转化。
-
自动重定向,基于一定的次数,不会造成死循环。
- 自动gizp压缩,帮你完成request编码和response解码以使http连接更加快速.
- 通过网络探测完成智能重试,对复杂的、信号不良的的移动网络做特殊的优化。
-
禁用一种或多种网络, 比如2G,3G。
- 简明且统一的异常处理体系:清晰、准确的抛出客户端、网络、服务器三种异常。
- 内置的AsyncExecutor可以让你轻松实现异步和并发的http请求,如果你喜欢,随意使用你自己的AsyncTask或Thread来完成异步,推荐使用更强大、高效的专业并发库。
架构图
一个良好的项目结构:
- 底层是业务无关的框架库,用之四海而皆准。
- 中层是针对业务的三方库,以及主要逻辑实现,全部业务都在这里。
- 上层是Activity、Fragment、Views&Widget等视图渲染和业务调用。
这样一个结构,使得你的代码快速在phone和pad以及tv之间迁移,且让你整个更为清晰。那么LiteHttp就位于这个结构的底层。
LiteHttp结构模型:
基本用法
基础请求
LiteHttpClient client = LiteHttpClient.getInstance(context);
Response res = client.execute(new Request("http://baidu.com"));
String html = res.getString();
异步请求
HttpAsyncExcutor asyncExcutor = new HttpAsyncExcutor();
asyncExcutor.execute(client, new Request(url), new HttpResponseHandler() {
@Override
protected void onSuccess(Response res, HttpStatus status, NameValuePair[] headers) {
// do some thing on UI thread
}
@Override
protected void onFailure(Response res, HttpException e) {
// do some thing on UI thread
}
});
Java Model 作为参数的请求
// build a request url as : http://a.com?name=jame&id=18
Man man = new Man("jame",18);
Response resonse = client.execute(new Request("http://a.com",man));
man class:
public class Man implements HttpParam{
private String name;
private int id;
private int age;
public Man(String name, int id){
this.name = name;
this.id= id;
}
}
全自动Json转化
String url = "http://litesuits.github.io/mockdata/user?id=18";
User user = client.get(url, null, User.class);
User Class :
public class User extends ApiResult {
//全部声明public是因为写sample方便,不过这样性能也好,
//即使private变量LiteHttp也能自动赋值,开发者可自行斟酌修饰符。
public UserInfo data;
public static class UserInfo {
public String name;
public int age;
public ArrayList<String> girl_friends;
}
}
public abstract class ApiResult {
public String api;
public String v;
public Result result;
public static class Result {
public int code;
public String message;
}
}
User json structure:
{
"api": "com.xx.get.userinfo",
"v": "1.0",
"result": {
"code": 200,
"message": "success"
},
"data": {
"age": 18,
"name": "qingtianzhu",
"girl_friends": [
"xiaoli",
"fengjie",
"lucy"
]
}
}
多文件上传
String url = "http://192.168.2.108:8080/LiteHttpServer/ReceiveFile";
FileInputStream fis = new FileInputStream(new File("sdcard/1.jpg"));
Request req = new Request(url);
req.setMethod(HttpMethod.Post)
.addParam("lite", new File("sdcard/lite.jpg"), "image/jpeg")
.addParam("feiq", new File("sdcard/feiq.exe"), "application/octet-stream");
if (fis != null) req.addParam("meinv", fis, "sm.jpg", "image/jpeg");
Response res = client.execute(req);
文件和位图下载
// one way
File file = client.execute(imageUrl, new FileParser("sdcard/lite.jpg"), HttpMethod.Get);
// other way
Response res = client.execute(new Request(imageUrl).setDataParser(new BitmapParser()));
Bitmap bitmap = res.getBitmap();
QQ 交流群: 47357508
版权声明:本文为博主原创文章,若转载希望您勿删减,并保留出处。
分享到:
相关推荐
C++程序设计:第十一讲流类库与输入输出.pdf
java源码:zxing(条形码处理类库).rar
java源码:Java五线谱处理类库 abc4j.zip
这个参考官方给出的demo文件进行修改的微信公众号开发代码,需要的朋友可以参考下,方便大家学习php的代码。
Apache Commons:一个流行的Java类库,提供了许多实用的工具和组件,如Commons Lang(用于处理核心Java类库中的核心类)、Commons IO(用于处理I/O操作)、Commons Collections(提供了许多额外的集合类)等。...
adminer一个数据库管理工具,单文件,非常好用支持mysql,sqlite,在没有安装phpmyadmin情况下最好的选择;使用后要删除;
Swift Mailer是一个功能丰富的PHP邮件库,不依赖于PHP自带的mail() 函数,因为该函数在发送多个邮件时占用的系统资源很高。Swift直接与SMTP服务器通讯,具有非常高的发送速度和效率。
.NET 框架类库是一个由 Microsoft .NET 框架 SDK 中包含的类、接口和值类型组成的库。 该库提供对系统功能的访问,并且被设计为 .NET 框架应用程序、组件和控件的生成基础。
c# rest http请求类库c# rest http请求类库c# rest http请求类库
一个简单的文本处理类库,感兴趣的朋友们可以下载下来,用到自己的项目中。
C# 教学资料 从基础只是到高级应用都有所讲解 ...首先介绍了Microsoft .NET Framework的框架,以及公共语言运行库、.NET Framework类库、ADO.NET和Web服务的特点。接着讲述了命名空间的基本定义和常用的类型。
SimpleJson:轻量级的JSON类库
ThreeByteLibrary:面向.Net Core 5的类库
Zend Cache:一个实用的缓存php类库
C 程序设计:第十一讲流类库与输入输出.pdf
词典:包含可重用代码的类库词典
Zend Cache:一个实用的缓存php类库,感兴趣的朋友们可以下载下来,用到自己的项目中。
最新jqery框架类库和帮助文档,包含1.3.2,1.3.2min,帮助文档和js特效文档会对你开发有帮助吧
PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,下载类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。
Sftp:C#利用Renci.SshNet类库实现SFTP协议操作文件