去年我写了一个Android网络框架Novate, 基于Retrofit和RxJava封装的链式网络框架, 支持okhttp的调用分格,又兼容Retrofit注入方式,并支持RxJava调用的链式操作, 不仅支持开发者自己扩展,还沿用Okhttp的高效的网络加载!最重要的novate自带的异常驱动机制,帮开发者解决了绝大部分的异常 错误处理,减少API或者业务代码出错的导致崩溃概率。
Gradle:
root:
app:
主要处理请求的API,包含RxGet, RxPost, RxDelete,RxPut, RxBody,RxFrom, RxUpLoad,RxDownLoad.使用基本APi之前 请阅读对RxCallBack的介绍。
进行get方式的请求调用,多种返回结果的方式供你选择,返回不同的数据类型参考请看原文链接RxCallBack的介绍。
返回String
new Novate.Builder(this)
.baseUrl(“www.xxx.com/”)
.build()
.rxGet("service/path", parameters, new RxStringCallback() { });
返回Bean
novate.rxGet("path or url", parameters, new RxResultCallback<JavaBean>() {
});
返回List
new Novate.Builder(this)
.baseUrl("http://xxx.com/")
.build()
.rxGet("service/getList", parameters, new RxListCallback<List<JavaBean>>() {
...
});
返回File
novate.rxGet("path or url", null, new RxFileCallBack(filePath, "name.jpg") {
..... });
进行Post方式的请求调用
返回String
novate.rxPost("path or url", parameters, new RxStringCallback() {
.....
});
返回Bean
novate.rxPost("path or url", parameters, new RxResultCallback<ResultModel>() {
});
返回List
novate.rxPost("path or url", parameters, new RxListCallback<List<ResultModel>>() { .... });
返回File
novate.rxPost("path or url", null, new RxFileCallBack(filePath, "name.jpg") { ....
});
这里主要介绍怎么使用Novate上传文件:
Novate提供了2种方式上传文件。body和part模式,Body不包含key值,part包含key值。
以Body方式post数据,可以上报文件,图片等。
String mPath = uploadPath; //"you File path ";
String url = "http:/xxx.com"; novate.rxUploadWithBody(url, new File(mPath), new RxStringCallback() { ....
});}
上传文件,默认的key是 image
String mPath = uploadPath; //"you File path ";
String url = "http:/xxx.com";
File file = new File(mPath);
novate.rxUploadWithPart(url, file, new RxStringCallback() { ....
});
List<File> fileList = new ArrayList<>();
fileList.add(file);
fileList.add(file);
fileList.add(file);
novate.rxUploadWithPartListByFile(url, fileList, new RxStringCallback() {
});
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("key1", V1)
.addFormDataPart("key2", v2)
.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/*"), file))
.build();
novate.rxBody(url , requestBody, callback);
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("key1", V1)
.addFormDataPart("key2", v2)
.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/*"), file))
.build();
novate.rxBody(url , requestBody, callback);
String downUrl = "http://wap.dl.pinyin.sogou.com/wapdl/hole/201512/03/SogouInput_android_v7.11_sweb.apk"; novate.rxGet(downUrl, parameters, new RxFileCallBack(FileUtil.getBasePath(this), "test.apk") {
});
String downUrl = "http://wap.dl.pinyin.sogou.com/wapdl/hole/201512/03/SogouInput_android_v7.11_sweb.apk";
new Novate.Builder(this)
.rxDownload(downUrl, new RxFileCallBack(FileUtil.getBasePath(this), "test.apk") {
});
喜欢okhtp姿势的朋友可以继续使用姿势:
Request request =
new Request.Builder()
.get()
.url("you url")
.build(); novate.execute(request, new RxStringCallback() {
});
Novate默认的API
让你不爽时,Novate同样支持你自己Retrofit的ApiService
。
新建MyApi
public interface MyApi { @GET("url")
Observable<MyBean> getdata(@QueryMap Map<String, String> maps);}
调用Call()
MyApi myApi = novate.create(MyApi.class);novate.call(myApi.getdata(parameters),
new BaseSubscriber<MyBean>{
'''''''
});}
更多API,可以去github阅读 欢迎star!有疑问可以直接留言或者提issues, 或者加QQ群458542940。
GItHub;https://github.com/Tamicer/Novate/wiki
Tamic原创转载请联系我授权
相关推荐
技术 - 思维 - 成长
END