• Stars
    star
    220
  • Rank 180,422 (Top 4 %)
  • Language
    Java
  • License
    MIT License
  • Created about 8 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Rxjava+ReTrofit+okHttp终极封装(String方案)

Rxjava+ReTrofit+okHttp深入浅出-终极封装特殊篇(替换Gson返回)

介绍

封装原理博客专栏:

Rxjava+ReTrofit+okHttp深入浅出-终极封装

介绍如何放弃GsonConverterFactory,直接返回String,灵活我们的封装!

兄弟版本-Rxjava+ReTrofit+okHttp深入浅出-终极封装Gson方案

具备功能

    1.Retrofit+Rxjava+okhttp基本使用方法
    2.统一处理请求数据格式
    3.统一的ProgressDialog和回调Subscriber处理
    4.取消http请求
    5.预处理http请求
    6.返回数据的统一判断
    7.失败后的retry处理
    8.RxLifecycle管理生命周期,防止泄露
    9.文件上传下载(支持多文件,断点续传)
    10.Cache数据持久化和数据库(greenDao)两种缓存机制
    11.异常统一处理

效果

Preview

使用

1.初始化

moudel导入工程

  compile project(':rxretrofitlibrary')

在Application中初始化RxRetrofitApp

 RxRetrofitApp.init(this);

2.初始化HttpManager

需要传递一个回调HttpOnNextListener接口和activity生命周期

  HttpManager manager=new HttpManager(this,this);

3.初始请求的数据和参数

public class SubjectPostApi extends BaseApi {
//    接口需要传入的参数 可自定义不同类型
    private boolean all;
    /*任何你先要传递的参数*/
//    String xxxxx;

    /**
     * 默认初始化需要给定回调和rx周期类
     * 可以额外设置请求设置加载框显示,回调等(可扩展)
     */
    public SubjectPostApi() {
        setShowProgress(true);
        setCancel(true);
        setCache(true);
        setMothed("AppFiftyToneGraph/videoLink");
        setCookieNetWorkTime(60);
        setCookieNoNetWorkTime(24*60*60);
    }

    /**
    *通过自定义sercie得到Observable对象
    *sercie可动态设置,方便扩展
    */
    @Override
    public Observable getObservable(Retrofit retrofit) {
        HttpPostService httpService = retrofit.create(HttpPostService.class);
        return httpService.getAllVedioBy(isAll());
    }
  }

4.请求后的统一处理

通过method参数判断接口,然后动态解析返回的数据

    @Override
    public void onNext(String resulte, String method) {
        /*post返回处理*/
        if(method.equals(postEntity.getMothed())){
            List<SubjectResulte>  subjectResulte= JSONObject.parseArray(resulte,SubjectResulte.class);
            tvMsg.setText("post返回:\n"+subjectResulte.toString() );
        }

        /*上传返回处理*/
        if(method.equals(uplaodApi.getMothed())){
            UploadResulte uploadResulte=JSONObject.parseObject(resulte,UploadResulte.class);
            tvMsg.setText("上传成功返回:\n"+uploadResulte.getHeadImgUrl());
            Glide.with(MainActivity.this).load(uploadResulte.getHeadImgUrl()).skipMemoryCache(true).into(img);
        }
    }

    @Override
    public void onError(Throwable e) {
        tvMsg.setText("失败:\n" + e.toString());
    }
  • 初始化一个请求数据的对象继承BaseApi对象设置请求需要的参数
  • 通过httpmanger对象,触发请求
  • 结果统一通过BaseApi中的fun1方法判断,最后返回HttpOnNextListener

优化迭代

根据反馈及时更新和优化的过程,如果在使用过程中有任何问题,欢迎反馈给我!

思路

详细思路可以可以参看我的博客: Rxjava+ReTrofit+okHttp深入浅出-终极封装

QQ交流群

More Repositories

1

RxjavaRetrofitDemo-master

Retrofit+Rxjava+okhttp终极封装(Gson方案)
Java
1,061
star
2

ALibrary

Android常用开发工具类,方法全,功能多,体积小,便于快速开发!
Java
172
star
3

Rxbus

实现和EventBus3.0用法一样的RxBus
Java
63
star
4

Rx-Retrofit

Rxjava+ReTrofit+okHttp深入浅出-终极封装极简版
Java
62
star
5

RxRetrofit-mvp

RxRetrofit结合Mvp框架使用案例
Java
38
star
6

TransitionsDemo

Android转场动画框架使用demo
Java
34
star
7

TintDemo

Tint着色演示demo;让Android也能有iOS那么方便的图片色调转换
Java
17
star
8

DownProgressView

Android自定义view之仿ios-appstore下载进度按钮可设置大小,高度,颜色,各状态图片类型!
Java
15
star
9

SwipeCardView-master

Java
14
star
10

Cpx_model

Java
8
star
11

PathDemo

自定义view之无所不能的path
Java
7
star
12

Reflection

Java反射封装库,简化反射使用!
Java
6
star
13

SmartHome

智能家居系统
Java
6
star
14

RxRetrofit-tokean

提供RxRetrofit统一预处理tokean需求方案
Java
4
star
15

ProductFavorl

变种多渠道打包demo
Java
3
star
16

DaggerMvpDemo

演示Dagger2的使用法,结合Mvp实战演示
Java
3
star
17

ViewInjector

Android 编译时注解用法
Java
2
star
18

RetrofitAysProxy

Retrofit源码解析-动态代理
Java
1
star
19

VpnXXNetGoogle

翻墙遇到google
1
star
20

IjkPlayerLibraryDemo

IjkPlayerLibrary播放案例,简单封装
Java
1
star
21

TankWar

java编写的坦克大战游戏,大学期间学习java以后自己做的练手项目,没有实际的意义,是自己学习历程的中的一点记录而已 主要是针对java中常用语法,绘制等联系
HTML
1
star