All Projects → eajon → RxHttp

eajon / RxHttp

Licence: other
RxJava2+Retrofit+OkHttp3

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to RxHttp

CEventCenter
一个Android事件分发中心库,基于对象池及接口回调实现。实现类似BroadcastReceiver/RxBus/EventBus等的消息事件传递功能,用于在Activity/Fragment/Service之间的消息传递通讯。
Stars: ✭ 116 (+792.31%)
Mutual labels:  rxbus, rxbus2
Neteasecloudmusic Mvvm
Jetpack MVVM最佳实践 - 重构仿网易云音乐安卓客户端
Stars: ✭ 103 (+692.31%)
Mutual labels:  okhttp3, lifecycle
Geeknews
📚A pure reading App based on Material Design + MVP + RxJava2 + Retrofit + Dagger2 + Realm + Glide
Stars: ✭ 3,496 (+26792.31%)
Mutual labels:  okhttp3, rxbus
Androidbaseframemvvm
Android 组件化 MVVM 框架 基于 Jetpack + Kotlin
Stars: ✭ 169 (+1200%)
Mutual labels:  okhttp3, lifecycle
Mvvmarms
Android MVVM Architecture Components based on MVPArms and Android Architecture Components.
Stars: ✭ 425 (+3169.23%)
Mutual labels:  okhttp3, lifecycle
Awesome Wanandroid
⚡致力于打造一款极致体验的 http://www.wanandroid.com/ 客户端,知识和美是可以并存的哦QAQn(*≧▽≦*)n
Stars: ✭ 2,525 (+19323.08%)
Mutual labels:  okhttp3, rxbus
TeamManagerApp
A sample app structure using the MVVM architecture LiveData, RxJava, ViewModel, Room and the Navigation Arch Components.
Stars: ✭ 36 (+176.92%)
Mutual labels:  lifecycle
RxBus
🍾 标签/线程/Kotlin/自动注销的RxBus
Stars: ✭ 25 (+92.31%)
Mutual labels:  rxbus
LifecycleMvp
No description or website provided.
Stars: ✭ 20 (+53.85%)
Mutual labels:  lifecycle
RxJavaKotlinSample
RxJava2 and Kotlin sample project
Stars: ✭ 13 (+0%)
Mutual labels:  okhttp3
k8s-platform-lcm
A faster and easier way to manage the lifecycle of applications and tools, running and living around your Kubernetes platform
Stars: ✭ 186 (+1330.77%)
Mutual labels:  lifecycle
Palette
Android application to get the #hexcode and rgb() values for any image
Stars: ✭ 31 (+138.46%)
Mutual labels:  okhttp3
HotSalesPOS
No description or website provided.
Stars: ✭ 14 (+7.69%)
Mutual labels:  okhttp3
Eva
Eva and Wall-e
Stars: ✭ 131 (+907.69%)
Mutual labels:  rxjava2-retrofit2
compost
Manage lifecycle of stateful components
Stars: ✭ 15 (+15.38%)
Mutual labels:  lifecycle
AndroidStarterAlt
A sample View-based Android app using the MVP architecture. It uses Mosby, Dagger2, RxJava, retrofit, LoganSquare, requery, EventBus, Conductor.
Stars: ✭ 27 (+107.69%)
Mutual labels:  okhttp3
RxBus
Rx event bus based on RxRelay and custom observer
Stars: ✭ 16 (+23.08%)
Mutual labels:  rxbus
FastWaiMai
仿写美团外卖电商项目
Stars: ✭ 123 (+846.15%)
Mutual labels:  okhttp3
simple-http
抽取一个简单 HTTP 的通用接口,底层实现根据具体引入依赖指定。
Stars: ✭ 38 (+192.31%)
Mutual labels:  okhttp3
ParkingDemo
Taipei City Parking Lot Information Query System Demo
Stars: ✭ 18 (+38.46%)
Mutual labels:  lifecycle

Codacy Badge

RxHttp

     本框架 是对 RXJAVA2 + Retrofit + OkHttp3 + lifecycle的架构的封装
     1.采用链式调用一点到底
     2.支持动态配置和自定义Okhttpclient,支持okhttp自定义cookie管理
     3.支持多种方式访问网络GET、POST、PUT、DELETE等请求协议
     4.支持网络缓存,以及本地缓存,七种缓存策略可选
     5.支持固定添加header和动态添加header
     6.支持添加全局参数和动态添加局部参数
     7.支持文件下载,断点续传,监听进度
     8.支持多文件上传,监听进度
     9.支持任意数据结构的自动解析,支持gson,fastjson,jackson
     10.支持显示progressDialog,progreesBar,并且生命周期和请求自动关联,无需手动控制
     11.支持LifeCycle,所有请求可以配置生命周期与当前页面生命周期绑定
     等等
     具体功能使用方法参看demo

新增功能

支持无需设置返回对象Type 只需用泛型Observer指定对象类型 即可自动解析 例如:

此处设置为login 返回对象会自动解析成Login 解析失败则会报错,不填类型的时候,默认解析成String

                .request(new HttpObserver<Login>() {

                    @Override
                    public void onSuccess(Login o) {

                    }

                    @Override
                    public void onError(ApiException t) {

                    }
                });

支持对象参数 会自动解析对象中的属性 转成keyvalue

addTypeParamters(Object object)

addTypeHeader(Object object)

2.2.1版本开始支持 gson,jackson,fastjson

GSON 可以使用@GsonField 自定义注解 过滤掉不需要的参数 或者重定义jsonField值

JACKSON 可以使用@JsonIgnore 等原生注解 过滤掉不需要的参数 或者重定义jsonField值

FASTJSON 可以使用@JSONField 等原生注解 过滤掉不需要的参数 或者重定义jsonField值

导入

Step 1. Add the JitPack repository to your build file

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. Add the dependency

dependencies {
        implementation 'com.github.eajon:RxHttp:2.2.3'
        选择你需要的JSON解析器 并设置converterType 为该类型 converterType不配置 默认为GSON 需添加GSON依赖
        implementation 'com.google.code.gson:gson:2.8.5'
        implementation 'com.alibaba:fastjson:1.1.52.android'
        implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
}

如何使用他

在Application中设置基础配置

      RxHttp.getConfig()
            .baseUrl(...)/*基础路径,这里配置了请求中可以不单独配置*/
            .converterType(...)/*设置json解析器,默认GSON*/
            .baseHeader(...)/*公用请求头*/
            .baseParameter(...)/*公用请参数*/
            .okHttpClient(...)/*自定义okHttpClient*/
            .log(...)/*自定义Log名称*/
            .rxCache(...);/* 配置cache, 不配置默认使用okhttp的缓存*/

常规请求使用

         new RxHttp
            .Builder()
            .get()/*post() put() delete() 按需配置默认POST*/
            .requestBody(...)/*body对象*/
	.json(...)/*同body对象,contentType 自动设置成JSON*/
            .task(...)/*上传或者下载任务*/
            .baseUrl(...)/* 按需配置 RxConfig已配置,可不配*/
            .addHeader(...)/* 按需配置 */
            .addParameter(...)/* 按需配置 */
            .lifecycle(...)/* 关联生命周期,当前Activity需要继承RxAppCompatActivity */
            .withDialog(...)/*是否加入阻塞对话框,可以自定义diolog*/
            .tag(...)/*发射的id*/
            .cacheKey(...)/*缓存Key*/
            .retryTime(...)/*重试次数*/
            .build()
            .request(new HttpObserver<Login>() {

                    @Override
                    public void onSuccess(Login o) {

                    }

                    @Override
                    public void onError(ApiException t) {

                    }


                });

下载例子

File file1 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "WEIXIN" + ".apk")
DownloadTask downloadTask = new DownloadTask(file1.getName(), file1.getAbsolutePath());

Disposable disposeable=  new RxHttp
            .Builder()
	.get("16891/50CC095EFBE6059601C6FB652547D737.apk?fsname=com.tencent.mm_6.6.7_1321.apk&csr=1bbd")
            .baseUrl("http://imtt.dd.qq.com/")
            .tag("download")
            .lifecycle(this)
            .task(downloadTask)
            .withDailog(this)
            .build()
            .request(new DownlaodObserver() {
                @Override
                public void onSuccess(DownloadTask downloadTask) {

                }

                @Override
                public void onError(ApiException s) {

                }

                @Override
                public void onPause(DownloadTask downloadTask) {

                }

                @Override
                public void onProgress(DownloadTask downloadTask) {
                       runOnUiThread(new Runnable() {
                       @Override
                       public void run() {
                               LoggerUtils.info("download1", downloadTask.getState().toString() + downloadTask.getProgress() + "%" + downloadTask.getSpeedFormat());
                               download.setText(downloadTask.getState().toString() + downloadTask.getProgress() + "%" + downloadTask.getSpeedFormat() + "平均速度:" + downloadTask.getAverageSpeedFormat() + "用时:" + downloadTask.getDuration() + "速度:" + downloadTask.getAverageSpeed());
                               }
                          });

                       }
            });

上传例子

OCT-STREAM 上传 只支持单文件

         UploadTask uploadTask = new UploadTask( new File(path));
         Disposable disposeable = new RxHttp.Builder()
                .post("UploadFile?tentantId=16")
                    .baseUrl("https://shop.cxwos.com/admin/File/")
                    .task(uploadTask)/* OCT-STREAM方式上传类型为UploadTask*/
                    .lifecycle(this)
                    .build()
                    .request(new HttpObserver() {
                           @Override
                           public void onSuccess(Object o) {

                           }

                           @Override
                           public void onError(ApiException t) {

                           }

                            @Override
                            public void onProgress(BaseTask uploadTask) {
                                 runOnUiThread(new Runnable() {
                                       @Override
                                 public void run() {
                                        content.setText(uploadTask.getProgress() + "");
                                       }
                                    });
                                 }

                    });

Multipart 表单提交 支持多文件

          ArrayList <UploadTask> uploadTasks = new ArrayList <>();
          UploadTask uploadTask = new UploadTask( new File(path));
          UploadTask uploadTask2 = new UploadTask(new File(path2));
          uploadTasks.add(uploadTask);
          uploadTasks.add(uploadTask2);
          MultiUploadTask multiUploadTask =new MultiUploadTask("muiltTag",uploadTasks);
          Disposable disposeable = new RxHttp.Builder()
                    .baseUrl("https://shop.cxwos.com/admin/File/")
                    .api("UploadFile?tentantId=16")
                    .task(multiUploadTask)/* Multipart/form-data方式上传类型为MultiUploadTask*/
                    .lifecycle(this)/*上传按需配置lifecycle*/
                    .build()
                    .request(new UploadObserver() {
                           @Override
                           public void onSuccess(Object o) {

                           }

                          @Override
                          public void onError(ApiException t) {

                          }

                           @Override
                           public void onProgress(BaseTask task) {
                                runOnUiThread(new Runnable() {
                                        @Override
                                public void run() {
                                    content.setText("总进度:" + task.getProgress() + "%" + task.getState().toString());
                                                             if (task.getUploadTasks().size() == 2) {//假设上传2个文件
                                                                 content1.setText("第一个:" + task.getProgress(0) + "%" + task.getState(0).toString());
                                                                 content2.setText("第二个:" + task.getProgress(1) + "%" + task.getState(1).toString());

                                                             }
                                          }
                                        });
                                     }

                   });

如何暂停和取消

        //取消发射,下载即为暂停(下载重启任务可以断点续传),其他任务是取消
        disposeable.dispose();

如何监听进度

具体用例可参看DEMO,发现BUG,可联系[email protected],感谢关注

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].