RxHttp网络请求

RxHttp是一个轻量级的网络请求库,基于RxJava2、Retrofit和OkHttp4.x,完美兼容MVVM架构。它支持多BaseUrl,文件上传下载进度监听,断点续传,以及与生命周期绑定。此外,它还解决了泛型类型擦除问题,并提供与Glide共用OkHttpClient的功能。
摘要由CSDN通过智能技术生成

RxHttp

项目地址:kongpf8848/RxHttp 

简介: 基于 RxJava2+Retrofit+OkHttp4.x 封装的网络请求类库,亮点多多,完美兼容 MVVM(ViewModel,LiveData),天生支持网络请求和生命周期绑定,天生支持多 BaseUrl,支持文件上传下载进度监听,支持断点下载,支持 Glide 和网络请求公用一个 OkHttpClient

更多:作者   提 Bug   

标签:

基于 RxJava2+Retrofit 2.9.0+OkHttp 4.9.0 实现的轻量级,完美兼容 MVVM 架构的网络请求封装类库,小巧精致,简单易用,网络请求原来如此简单:smirk::smirk::smirk:

亮点

  • 代码量极少,类库体积不足 100kb,但足以胜任大部分 APP 的网络请求任务,浓缩的都是精华啊^

  • 完美兼容 MVVM,MVC 架构,兼容 Kotlin 和 Java,Kotlin+MVVM+RxHttp 结合起来使用更酸爽,MVVM 官方推荐,抱紧 Google 大腿就对了

  • 完美解决泛型类型擦除的棘手问题,还原泛型的真实类型

  • 天生支持网络请求和 Activity,Fragment 生命周期绑定,界面销毁时自动取消网络请求回调

  • 天生支持多 BaseUrl,支持动态传入 Url

  • 支持自定义 OkHttpClient.Builder,可高度自定义网络请求参数,支持 Https 证书单向校验(客户端校验服务端证书)

  • 支持 Glide 等和 Http 请求公用一个 OkHttpClient,充分利用 OkHttpClient 的线程池和连接池,大部分情况下一个 App 一个 OkHttpClient 就够了

  • 支持 GET,POST,PUT,DELETE 等请求方式,支持文件上传及进度监听,支持同时上传多个文件,支持 Uri 上传

  • 支持文件下载及进度监听,支持大文件下载,支持断点下载

使用要求

项目基于 AndroidX,Java8+,minSdkVersion>=21

使用

  • 在项目根目录的 build.gradle 文件中添加:
    allprojects {
      repositories {
          mavenCentral()
      }
    }
    
  • 在具体 Module 的 build.gradle 文件中添加:
    implementation 'io.github.kongpf8848:RxHttp:1.0.12'
    

配置(可选)

  RxHttpConfig.getInstance()
    /**
     * 失败重试次数
     */
    .maxRetries(3)
    /**
     * 每次失败重试间隔时间
     */
    .retryDelayMillis(200)
    /**
     * Https 证书校验,单向校验,即客户端校验服务端证书,null 则为不校验
     */
     //.certificate(AssetUtils.openFile(applicationContext,"xxx.cer"))
    /**
     * 设置 OkHttpClient.Builder(),RxHttp 支持自定义 OkHttpClient.Builder()
     */
    .getBuilder().apply {
        connectTimeout(60, TimeUnit.SECONDS)
        readTimeout(60, TimeUnit.SECONDS)
        writeTimeout(60, TimeUnit.SECONDS)
        /**
         * DEBUG 模式下,添加日志拦截器,建议使用 RxHttp 中的 FixHttpLoggingInterceptor,使用 OkHttp 的 HttpLoggingInterceptor 在上传下载的时候会有 IOException 问题
         */
        if (BuildConfig.DEBUG) {
            addInterceptor(FixHttpLoggingInterceptor().apply {
                level = FixHttpLoggingInterceptor.Level.BODY
            })
        }
    }

基础使用

  • GET/POST/PUT/DELETE/上传请求
   RxHttp.getInstance()
    /**
     * get:请求类型,可为 get,post,put,delete,upload,分别对应 GET/POST/PUT/DELETE/上传请求
     * context:上下文,可为 Context,Activity 或 Fragment 类型,当 context 为 Activity 或 Fragment 时网络请求和生命周期绑定
     */
    .get(context)
    /**
     * 请求 url,如 https://www.baidu.com
     */
    .url("xxx")
    /**
     *请求参数键值对,类型为 Map<String, Any?>?,如 hashMapOf("name" to "jack")
     */
    .params(map)
    /**
     *每个网络请求对应的 tag 值,可为 null,用于后续手动根据 tag 取消指定网络请求
     */
    .tag("xxx")
    /**
     * HttpCallback:网络回调,参数 xxx 为返回数据对应的数据模型,
     * 类似 RxJava 中的 Observer,onComplete 只有在 onNext 回调之后执行,如发生错误则只会回调 onError 而不会执行 onComplete
     */
    .enqueue(object : HttpCallback<xxx>() {
        /**
         * http 请求开始时回调
         */
        override fun onStart() {

        }

        /**
         * http 请求成功时回调
         */
        override fun onNext(response: xxx?) {

        }

        /**
         * http 请求失败时回调
         */
        override fun onError(e: Throwable?) {

        }

        /**
         * http 请求成功完成时回调
         */
        override fun onComplete() {

        }

        /**
         * 上传进度回调,请求类型为 upload 时才会回调
         */
        override fun onProgress(readBytes: Long, totalBytes: Long) {

        }
    })
  • 下载请求
   RxHttp.getInstance()
      /**
       * download:请求类型,下载请求
       * context:上下文,如不需要和生命周期绑定,应该传递 applicationContext
       */
      .download(context)
      /**
       * 保存路径
       */
      .dir(dir)
      /**
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值