LiteHttp 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
LiteHttp 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
LiteHttp 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
LiteHttp 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
LiteHttp 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 马天宇
适用人群 未知
收录时间 2014-03-16

软件简介

 

简介

LiteHttp是一款简单、智能、灵活的HTTP框架库,它在请求和响应层面做到了全自动构建和解析,主要用于Android快速开发。借助LiteHttp你只需要一行代码即可完美实现http连接,它全面支持GET, POST, PUT, DELETE, HEAD, TRACE, OPTIONS 和 PATCH八种基本类型。LiteHttp能将Java Model转化为http请求参数,也能将响应的json语句智能转化为Java Model,这种全自动解析策略将节省你大量的构建请求、解析响应的时间。并且,你能自己继承重新实现Dataparser这个抽象类并设置给Request,来将http原始的inputstream转化为任何你想要的东西。

引言

http://litesuits.github.io/guide/http/get-start.html  

LiteHttp引言,一个案例告诉你它的强大之处。

功能及特点

  • 单线程,所有方法都基于一个线程,绝不会跨线程,多线程的事情交给它自带的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来完成异步,推荐使用更强大、高效的专业并发库

架构图

一个良好的项目结构:

App Architecture

  • 底层是业务无关的框架库,用之四海而皆准。
  • 中层是针对业务的三方库,以及主要逻辑实现,全部业务都在这里。
  • 上层是Activity、Fragment、Views&Widget等视图渲染和业务调用。 
    这样一个结构,使得你的代码快速在phone和pad以及tv之间迁移,且让你整个更为清晰。那么LiteHttp就位于这个结构的底层。

LiteHttp结构模型:

LiteHttp Architecture

基本用法

基础请求

 

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 man = 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)
		.setParamModel(new BaiDuSearch())
		.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();

收藏并克隆LiteHttp Github 仓库,可以看到更多的使用案列,方便你进阶。

 

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2013/03/03 10:47

android http

public static String getHttpJSON(String url) { HttpGet httpRequest = new HttpGet(url); try { HttpClient httpclient = new DefaultHttpClient(); HttpResponse httpResponse = httpclient.execute(httpRequest); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String jsonStr = EntityUtils.toS...

0
0
发表了博客
2014/08/08 10:36

Android的HTTP Client

大多数联网类Android apps将使用HTTP来发送和接收数据。Android包含两种HTTP客户端:HttpURLConnection和Apache HTTP Client。它们两者都支持HTTPS,streaming上传和下载,可配置的超时,IPv6和连接池。 Apache HTTP Client DefaultHttpClient 和它的兄弟AndroidHttpClient是适用于web浏览器的可扩展的HTTP clients。它们具有数量众多且灵活的APIs。它们的实现是稳定的,并具有很少的bugs。 但是这个API的大小使得在不破坏兼容性...

0
0
发表了博客
2013/04/28 00:00

Android Http通信

Http的方式通信,下面看看它的过程: 1、传入URL,实例化HtppPost。Http通信当然是Web通信,就要一个网址了,即HttpPost httpRequest = new HttpPost(String URL); 2、发送参数(无参、带参)。这里有两种方法:Get/Post方法,选择用哪个我相信大家都知道,即先传参httpRequest.setEntity(httpentity), 再发送new DefaultHttpClient().execute(httpRequest); 3、得到服务器所调用方法的结果。前面传了个参,同理,服务器...

0
6
发表了博客
2018/08/21 14:19

android http json

使用Gson库 Step1: download Gson jar file goto https://github.com/google/gson Gson Download downloads at Maven Central step2: To use Gson in Android 1) copy jar to app\libs (物理方式复制进入) 2) app->build.gradle文件中添加 dependencies { implementation 'com.google.code.gson:gson:2.8.5' } ps: 错误处理 错误1:不能导入 ps: 点击alt+enter import class 无效时,点击alt+enter弹出菜单中gradle sync 错误...

0
0
发表了博客
2019/10/30 19:47

TensorFlow Lite for Android示例

一、TensorFlow Lite TensorFlow Lite 是用于移动设备和嵌入式设备的轻量级解决方案。TensorFlow Lite 支持 Android、iOS 甚至树莓派等多种平台。 二、tflite格式 TensorFlow 生成的模型是无法直接给移动端使用的,需要离线转换成.tflite文件格式。 tflite 存储格式是 flatbuffers。 FlatBuffers 是由Google开源的一个免费软件库,用于实现序列化格式。它类似于Protocol Buffers、Thrift、Apache Avro。 因此,如果要给移动端使...

0
1
发表了博客
2014/07/17 16:05

android http请求

1.使用的类 HttpGet 代表http的Get请求对象 HttpPost 代表http的Post请求对象 HttpClient http服务客户端,相当于浏览器 2封装类 public class AndroidNetRequestUtil {   public InputStream sendGetRequest(String url,Map<String, String> params,String encode) throws Exception{     StringBuilder requestpath=new StringBuilder(url);     requestpath.append('?');     if(params!=null){       for (Map.Entry<String, String> ...

0
0
发表了博客
2019/01/12 15:07

【Android Studio】为Android Studio设置HTTP代理

大陆的墙很厚很高,初次安装Android Studio下载SDK等必定失败,设置代理方法如下: 到android studio安装目录,打开bin目录,编辑idea.properties, 在文件末尾添加: disable.android.first.run=true 这将禁用第一次运行 再次打开android studio将进入欢迎页面,点击Config..., 搜索HTTP,即可设置HTTP代理 删掉Step 1 中所加的那一行,再次启动android studio,就可以使用你的HTTP代理下载SDK等组件了。 Android SDK 在线更新镜...

0
3
发表了博客
2012/11/02 17:18

Android HTTP Code

package com.and; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.util.HashMap; import java.util.Map; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import org.apache.http.cli...

0
0
发表了博客
2013/07/17 13:20

android http请求

get,post方法

0
0
2015/03/30 21:40

android-async-http详解

android-async-http开源项目可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来非常简单,关于android-async-http开源项目的介绍内容来自于官方:http://loopj.com/android-async-http/.下面我对此主页上内容进行大体上的翻译,希望能够对你理解android-async-http开源项目有所帮助 1.1 Overview(概况) An asynchronous callback-based Http client for Android built on top of Apache’s HttpClient libraries. All...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2014/03/16 15:23

LiteHttp:智能的android http框架

简介 LiteHttp是一款简单、智能、灵活的HTTP框架库,它在请求和响应层面做到了全自动构建和解析,主要用于Android快速开发。借助LiteHttp你只需要一行代码即可完美实现http连接,它全面支持GET, POST, PUT, DELETE, HEAD, TRACE, OPTIONS 和 PATCH八种基本类型。LiteHttp能将Java Model转化为http请求参数,也能将响应的json语句智能转化为Java Model,这种全自动解析策略将节省你大量的构建请求、解析响应的时间。并且,你能自...

11
29
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
60 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部