WeHttp:一个基于OkHttp的面向Android开发的网络库封装 发布于 2017-10-02 3人围观 0条评论
没有帐号?立即注册 0 条评论
WeHttp 简介
一个基于OkHttp3的面向Android开发的网络库封装,另外包含了一个简易的JSON转换库.
GitHub地址: github.com/leishengwei…
WeHttp特性:
- 本库遵循Android的开发习惯. 可以在
Application#onCreate()
中进行初始化,然后在发送网络请求的可以调用静态方法一键发送请求. - 内置了基于WebView的Cookie管理
- 支持自定义JSON转换器并且内置了一个JSON转换器.
- 封装了公共header和Query,pin校验,log,网络代理等配置
- 发送请求支持各种请求方法,请求体支持文本,JSON,文件,MultiPart,Pojo等多种类型,且可以自己判断设置
MediaType
. - 支持类似RxJava方式的回调.
- 支持配置返回OkHttp原生配置就行配置;支持请求返回原生OkHttp的Response进行个性化操作.
- 支持一键取消请求
- 支持多个网络配置(通过非静态的WeOkHttp).
- 只依赖OkHttp及其本身依赖的OkIo.
初始化
/**
* 全局配置
*/
//自定义JSON转换器:默认WeJson
TypeAdapter adapter = new TypeAdapter() {
@Override
public <T> T from(String s, Class<T> classOfT) {
return null;
}
@Override
public <T> String to(T t) {
return null;
}
};
//自定义Cookie管理策略,默认不管理Cookie
WeCookie weCookie = new WeCookie() {
@Override
public void clearCookie() {
}
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
return null;
}
};
WeHttp.init()
//自定义JSON转换器,默认使用的是内置的WeJson
.adapter(adapter)
//定义全局header
.header("world", "world")
.header("hello", "hello")
//定义全局的param,就是url中的键值对参数
.params("key", "value")
//定义PIN校验
.addPin("", "")
//设置base url
.baseUrl("...")
//定义Cookie保存策略
.cookie(weCookie)
//也可以选择使用内置的Android WebView管理Cookie
.cookieWebView(null)
//设置代理
.proxy("ip", 80, "username", "password")
//设置日志级别
.log(WeLog.Level.NONE)
//设置超时时间
.timeout(1000, 1000, 1000)
//拿到OkHttp的配置对象进行配置
.clientConfig().retryOnConnectionFailure(true);
//这些配置的生效时间为第一次调用请求时
发送请求
//这里定义的返回类型都是String(为了例子简单,不想多定义其他类了),开发者可以设置为自己的POJO对象
//这里都是演示调用,无法执行
//同步GET请求
WeHttp.<String>get("get url")
//单个Query
.param("key", "value")
//批量添加Query
.param(new HashMap<String, String>())
//设置tag
.tag("tag")
//执行
.execute(String.class);
//POST 异步请求
WeHttp.<String>post("post url")
//post请求体有多种选择
.bodyJson("{}") //json 请求
.bodyText("text") //plain text请求
.bodyFile(new File("")) //文件请求
//传入一个POJO对象, 如果POJO中有有效文件则为MultiPart请求,否则为JSON请求
.body(null)
//一旦传入下面两个方法,请求会自动转换为MultiPart类型
.addPart("name", new File(""), WeMediaType.PNG)
.addBodyQuery("name", "value")
//回调都在主线程,onStart()在execute()调用所在线程
.execute(String.class, new WeReq.WeCallback<String>() {
@Override
public void onStart(WeReq call) {
}
@Override
public void onFinish() {
}
@Override
public void onFailed(WeReq call, int type, int code, String msg, IOException e) {
}
@Override
public void onSuccess(WeReq call, String data) {
}
})
//也可以使用一个默认的Callback,只需要实现success和failed两个方法
.execute(String.class, new WeBaseCallback() {
@Override
public void success(WeReq call, Object o) {
}
@Override
public void failed(WeReq call, int type, int code, String msg, IOException e) {
}
})
;
//其他请求,delete,put,patch等
WeHttp.delete("delete url");
//取消请求:通过前面定义的tag
WeHttp.cancel("tag");
//类似RxJava的subscribe回调方式
Observable subscribe = WeHttp.<String>get("").subscribe(String.class);
subscribe.subscribe(new WeReq.WeCallback<String>() {
@Override
public void onStart(WeReq call) {
}
@Override
public void onFinish() {
}
@Override
public void onFailed(WeReq call, int type, int code, String msg, IOException e) {
}
@Override
public void onSuccess(WeReq call, String data) {
}
});
//返回其他类型,将不会进行JSON转换操作
//返回类型为Response,直接返回OkHttp的Response对象.这在框架不能满足的时候调用
WeHttp.<Response>post("").execute(Response.class);
//返回类型为String会直接将Response中的结果转换为字符串返回
WeHttp.<String>post("").execute(String.class);
JSON转换
内置了一个JSON转换的库,这个库基于Android的JsonObject
和JsonArray
,如果不希望依赖太多的第三方库,可以使用内置的JSON库,否则可以自定义JSON库,参考前面的示例代码.
public void testJson() {
new WeJson().toJson(null);
new WeJson().fromJson("", String.class);
}
上一篇: 已经是第一篇啦
下一篇: C 语言开发从零开始入门
立即登录,发表评论没有帐号?立即注册 0 条评论