前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Novate 一款Android RxStyle的网络框架

Novate 一款Android RxStyle的网络框架

作者头像
开发者技术前线
发布2020-11-23 15:42:33
9160
发布2020-11-23 15:42:33
举报

去年我写了一个Android网络框架Novate, 基于Retrofit和RxJava封装的链式网络框架, 支持okhttp的调用分格,又兼容Retrofit注入方式,并支持RxJava调用的链式操作, 不仅支持开发者自己扩展,还沿用Okhttp的高效的网络加载!最重要的novate自带的异常驱动机制,帮开发者解决了绝大部分的异常 错误处理,减少API或者业务代码出错的导致崩溃概率。

功能

  • 优化设计:加入基础API,减少Api冗余
  • 强大的缓存模式: 支持离线缓存, 无网络智能加载缓存,可配置是否需要缓存
  • cookie管理:自带cookie管理机制
  • 全方位请求模式:支持多种方式访问网络(get,put, post ,delete)
  • 轻送调用:支持表单,图文一起,json上传。
  • 文件传输:支持文件下载和上传,支持进度
  • 动态添加:支持请求头和参数统一添加,分别添加。
  • 结果处理:支持对返回结果的统一处理,自动帮你序列化复杂的数据。
  • 扩展性强:支持自定义的Retrofit的API,默认Api无法满足时可自定义自己的Service
  • 悠雅方便:支持统一请求访问网络的流程控制,以方便帮你完美加入Processbar进度。
  • RxJava结合: 结合RxJava,线程智能控制

集成

Gradle:

root:

app:

RxAPi

主要处理请求的API,包含RxGet, RxPost, RxDelete,RxPut, RxBody,RxFrom, RxUpLoad,RxDownLoad.使用基本APi之前 请阅读对RxCallBack的介绍。

RxGet

进行get方式的请求调用,多种返回结果的方式供你选择,返回不同的数据类型参考请看原文链接RxCallBack的介绍。


基础使用:

返回String

代码语言:javascript
复制
new Novate.Builder(this)
          .baseUrl(“www.xxx.com/”)
          .build()
          .rxGet("service/path", parameters, new RxStringCallback() {       });

返回Bean

代码语言:javascript
复制
novate.rxGet("path or url", parameters, new RxResultCallback<JavaBean>() {
     
   });

返回List

代码语言:javascript
复制
new Novate.Builder(this)
           .baseUrl("http://xxx.com/")
           .build()
           .rxGet("service/getList", parameters, new RxListCallback<List<JavaBean>>() {
             ...
           });

返回File

代码语言:javascript
复制
novate.rxGet("path or url", null, new RxFileCallBack(filePath, "name.jpg") {
    .....   });

RxPost:

进行Post方式的请求调用

返回String

代码语言:javascript
复制
novate.rxPost("path or url", parameters, new RxStringCallback() {
   .....
     
   });

返回Bean

代码语言:javascript
复制
novate.rxPost("path or url", parameters, new RxResultCallback<ResultModel>() {
 
 
 });

返回List

代码语言:javascript
复制
novate.rxPost("path or url", parameters, new RxListCallback<List<ResultModel>>() {      ....   });

返回File

代码语言:javascript
复制
novate.rxPost("path or url", null, new RxFileCallBack(filePath, "name.jpg") {      ....
   });

上传文件

这里主要介绍怎么使用Novate上传文件:

Novate提供了2种方式上传文件。body和part模式,Body不包含key值,part包含key值。

RxUploadWithBody

以Body方式post数据,可以上报文件,图片等。

代码语言:javascript
复制
String mPath = uploadPath; //"you File path ";
   String url = "http:/xxx.com";   novate.rxUploadWithBody(url, new File(mPath), new RxStringCallback() {     ....
   });}

RxUploadWithPart

上传文件,默认的key是 image

代码语言:javascript
复制
String mPath = uploadPath; //"you File path ";
  String url = "http:/xxx.com";
  File file = new File(mPath);
  novate.rxUploadWithPart(url, file, new RxStringCallback() {     ....
   });

上传多文件:

RxUploadWithPartListByFile:

代码语言:javascript
复制
List<File> fileList = new ArrayList<>();
   fileList.add(file);
   fileList.add(file);
   fileList.add(file);
   novate.rxUploadWithPartListByFile(url, fileList, new RxStringCallback() {           
    });

图文一起

代码语言:javascript
复制
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);

RxBody

代码语言:javascript
复制
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);

下载文件

使用rxGet()实现下载:

代码语言:javascript
复制
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") {     
   });

RxDown()下载

代码语言:javascript
复制
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") {
               
           });

OkHTTP 姿势

喜欢okhtp姿势的朋友可以继续使用姿势:

代码语言:javascript
复制
  Request request =
           new Request.Builder()
                   .get()
                   .url("you url")
                   .build();   novate.execute(request, new RxStringCallback() {       
   });

Retrofit Api 姿势

Novate默认的API让你不爽时,Novate同样支持你自己Retrofit的ApiService

定义APi 同Retrofit的Api

新建MyApi

代码语言:javascript
复制
 public interface MyApi { @GET("url")
 Observable<MyBean> getdata(@QueryMap Map<String, String> maps);}

Execute

调用Call()

代码语言:javascript
复制
 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原创转载请联系我授权

相关推荐

如何在Android中优雅的分发深度链接

技术 - 思维 - 成长

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开发者技术前线 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能
  • 集成
  • RxAPi
    • RxGet
      • 基础使用:
    • RxPost:
      • 上传文件
        • 上传多文件:
        • RxUploadWithPartListByFile:
    • RxUploadWithBody
    • RxUploadWithPart
      • 图文一起
        • RxBody
      • 下载文件
        • 使用rxGet()实现下载:
          • RxDown()下载
          • OkHTTP 姿势
          • Retrofit Api 姿势
            • 定义APi 同Retrofit的Api
              • Execute
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档