From fa09756b4989ce10df7afa67302196c936bc6866 Mon Sep 17 00:00:00 2001 From: D Date: Fri, 27 Oct 2017 15:33:30 +0800 Subject: [PATCH] Core --- app/build.gradle | 3 +- app/src/main/AndroidManifest.xml | 7 + .../main/java/com/d/rxnet/MainActivity.java | 48 ++- .../com/d/rxnet/model/MovieTopModelInfo.java | 68 ++++ .../main/java/com/d/rxnet/request/Down.java | 104 ++++++ .../main/java/com/d/rxnet/request/Get.java | 165 ++++++++++ .../main/java/com/d/rxnet/request/Post.java | 150 +++++++++ app/src/main/res/layout/activity_main.xml | 94 +++++- app/src/main/res/values/styles.xml | 2 +- lib/.gitignore | 1 + lib/build.gradle | 43 +++ lib/proguard-rules.pro | 25 ++ .../d/lib/rxnet/ExampleInstrumentedTest.java | 26 ++ lib/src/main/AndroidManifest.xml | 13 + lib/src/main/java/com/d/lib/rxnet/RxNet.java | 152 +++++++++ .../main/java/com/d/lib/rxnet/api/API.java | 41 +++ .../java/com/d/lib/rxnet/api/RetrofitAPI.java | 84 +++++ .../java/com/d/lib/rxnet/base/ApiManager.java | 69 ++++ .../com/d/lib/rxnet/base/ApiTransformer.java | 41 +++ .../java/com/d/lib/rxnet/base/Config.java | 19 ++ .../java/com/d/lib/rxnet/base/Headers.java | 38 +++ .../java/com/d/lib/rxnet/base/HttpConfig.java | 198 ++++++++++++ .../java/com/d/lib/rxnet/base/Params.java | 45 +++ .../com/d/lib/rxnet/base/RetrofitClient.java | 139 ++++++++ .../d/lib/rxnet/exception/ApiException.java | 86 +++++ .../java/com/d/lib/rxnet/func/ApiFunc.java | 45 +++ .../com/d/lib/rxnet/func/ApiRetryFunc.java | 46 +++ .../java/com/d/lib/rxnet/func/MapFunc.java | 23 ++ .../interceptor/GzipRequestInterceptor.java | 51 +++ .../rxnet/interceptor/HeadersInterceptor.java | 47 +++ .../rxnet/interceptor/HttpLogInterceptor.java | 187 +++++++++++ .../rxnet/interceptor/NoCacheInterceptor.java | 24 ++ .../interceptor/OfflineCacheInterceptor.java | 46 +++ .../interceptor/OnlineCacheInterceptor.java | 42 +++ .../d/lib/rxnet/listener/AsyncCallBack.java | 10 + .../d/lib/rxnet/listener/ConfigListener.java | 32 ++ .../lib/rxnet/listener/DownloadCallBack.java | 16 + .../d/lib/rxnet/listener/RequestListener.java | 14 + .../d/lib/rxnet/listener/SimpleCallBack.java | 12 + .../d/lib/rxnet/listener/UploadCallBack.java | 12 + .../java/com/d/lib/rxnet/mode/ApiCode.java | 42 +++ .../com/d/lib/rxnet/mode/HttpHeaders.java | 192 ++++++++++++ .../java/com/d/lib/rxnet/mode/MediaTypes.java | 27 ++ .../com/d/lib/rxnet/observer/AbsObserver.java | 26 ++ .../com/d/lib/rxnet/observer/ApiObserver.java | 38 +++ .../lib/rxnet/observer/DownloadObserver.java | 129 ++++++++ .../d/lib/rxnet/observer/SyncApiObserver.java | 38 +++ .../com/d/lib/rxnet/request/BaseRequest.java | 51 +++ .../d/lib/rxnet/request/DeleteRequest.java | 47 +++ .../d/lib/rxnet/request/DownloadRequest.java | 187 +++++++++++ .../com/d/lib/rxnet/request/GetRequest.java | 55 ++++ .../com/d/lib/rxnet/request/HeadRequest.java | 48 +++ .../com/d/lib/rxnet/request/HttpRequest.java | 225 +++++++++++++ .../d/lib/rxnet/request/OptionRequest.java | 47 +++ .../com/d/lib/rxnet/request/PatchRequest.java | 47 +++ .../com/d/lib/rxnet/request/PostRequest.java | 200 ++++++++++++ .../com/d/lib/rxnet/request/PutRequest.java | 47 +++ .../d/lib/rxnet/request/UploadRequest.java | 92 ++++++ .../java/com/d/lib/rxnet/util/Network.java | 296 ++++++++++++++++++ .../main/java/com/d/lib/rxnet/util/RxLog.java | 84 +++++ .../java/com/d/lib/rxnet/util/RxUtil.java | 43 +++ .../java/com/d/lib/rxnet/util/SSLUtil.java | 186 +++++++++++ lib/src/main/res/values/strings.xml | 3 + .../java/com/d/lib/rxnet/ExampleUnitTest.java | 17 + settings.gradle | 2 +- 65 files changed, 4421 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/com/d/rxnet/model/MovieTopModelInfo.java create mode 100644 app/src/main/java/com/d/rxnet/request/Down.java create mode 100644 app/src/main/java/com/d/rxnet/request/Get.java create mode 100644 app/src/main/java/com/d/rxnet/request/Post.java create mode 100644 lib/.gitignore create mode 100644 lib/build.gradle create mode 100644 lib/proguard-rules.pro create mode 100644 lib/src/androidTest/java/com/d/lib/rxnet/ExampleInstrumentedTest.java create mode 100644 lib/src/main/AndroidManifest.xml create mode 100644 lib/src/main/java/com/d/lib/rxnet/RxNet.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/api/API.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/api/RetrofitAPI.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/base/ApiManager.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/base/ApiTransformer.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/base/Config.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/base/Headers.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/base/HttpConfig.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/base/Params.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/base/RetrofitClient.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/exception/ApiException.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/func/ApiFunc.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/func/ApiRetryFunc.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/func/MapFunc.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/interceptor/GzipRequestInterceptor.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/interceptor/HeadersInterceptor.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/interceptor/HttpLogInterceptor.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/interceptor/NoCacheInterceptor.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/interceptor/OfflineCacheInterceptor.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/interceptor/OnlineCacheInterceptor.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/listener/AsyncCallBack.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/listener/ConfigListener.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/listener/DownloadCallBack.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/listener/RequestListener.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/listener/SimpleCallBack.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/listener/UploadCallBack.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/mode/ApiCode.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/mode/HttpHeaders.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/mode/MediaTypes.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/observer/AbsObserver.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/observer/ApiObserver.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/observer/DownloadObserver.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/observer/SyncApiObserver.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/BaseRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/DeleteRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/DownloadRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/GetRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/HeadRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/HttpRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/OptionRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/PatchRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/PostRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/PutRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/request/UploadRequest.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/util/Network.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/util/RxLog.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/util/RxUtil.java create mode 100644 lib/src/main/java/com/d/lib/rxnet/util/SSLUtil.java create mode 100644 lib/src/main/res/values/strings.xml create mode 100644 lib/src/test/java/com/d/lib/rxnet/ExampleUnitTest.java diff --git a/app/build.gradle b/app/build.gradle index 3b69eb7..dae668d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,10 +20,11 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) + compile project(':lib') compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a466e9a..7303de7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,13 @@ + + + + + + + subjects; + + public static class SubjectsBean { + public RatingBean rating; + public String title; + public int collect_count; + public String original_title; + public String subtype; + public String year; + public ImagesBean images; + public String alt; + public String id; + public List genres; + public List casts; + public List directors; + + public static class RatingBean { + public int max; + public double average; + public String stars; + public int min; + } + + public static class ImagesBean { + public String small; + public String large; + public String medium; + } + + public static class CastsBean { + public String alt; + public AvatarsBean avatars; + public String name; + public String id; + + public static class AvatarsBean { + public String small; + public String large; + public String medium; + } + } + + public static class DirectorsBean { + public String alt; + public AvatarsBeanX avatars; + public String name; + public String id; + + public static class AvatarsBeanX { + public String small; + public String large; + public String medium; + } + } + } +} diff --git a/app/src/main/java/com/d/rxnet/request/Down.java b/app/src/main/java/com/d/rxnet/request/Down.java new file mode 100644 index 0000000..b5ea787 --- /dev/null +++ b/app/src/main/java/com/d/rxnet/request/Down.java @@ -0,0 +1,104 @@ +package com.d.rxnet.request; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.content.Context; +import android.os.Environment; + +import com.d.lib.rxnet.RxNet; +import com.d.lib.rxnet.exception.ApiException; +import com.d.lib.rxnet.listener.DownloadCallBack; +import com.d.lib.rxnet.util.RxLog; + +/** + * Request Test --> Down + * Created by D on 2017/10/26. + */ +public class Down { + private String fileUrl = "http://m10.music.126.net/20171027150016/9b65067112ac9ab0df434b955d2aadd4/ymusic/9e23/460b/3237/53cd858401aff035a9b3139d78d78b82.mp3"; + private Context appContext; + + private ProgressDialog dialog; + + public Down(Activity activity) { + appContext = activity.getApplicationContext(); + dialog = new ProgressDialog(activity); + dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置进度条的形式为圆形转动的进度条 + dialog.setMessage("正在下载..."); + // 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的 + dialog.setTitle("下载文件"); + dialog.setMax(100); + } + + public void testAll() { + testIns(); +// testNew(); + } + + public void testIns() { + RxNet.getInstance(appContext).download(fileUrl) + .request(Environment.getExternalStorageDirectory().getPath() + "/test/", "" + System.currentTimeMillis() + ".mp3", new DownloadCallBack() { + @Override + public void onStart(long total) { + RxLog.d("dsiner_th_onStart: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onStart: -->total: " + total); +// dialog.show(); + } + + @Override + public void onProgresss(long download, long total) { + RxLog.d("dsiner_th_onProgresss: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onProgresss: -->download: " + download + " total: " + total); +// dialog.setProgress((int) (download * 100 / total)); + } + + @Override + public void onComplete() { + RxLog.d("dsiner_th_onComplete: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onComplete:"); +// dialog.setMessage("下载完成"); + } + + @Override + public void onError(ApiException e) { + RxLog.d("dsiner_th_onError: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onError " + e.getMessage()); +// dialog.dismiss(); + } + }); + } + + public void testNew() { + new RxNet(appContext).download(fileUrl) + .connectTimeout(60 * 1000) + .readTimeout(60 * 1000) + .writeTimeout(60 * 1000) + .retryCount(3) + .retryDelayMillis(300) + .request(Environment.getExternalStorageDirectory().getPath() + "/test/", "" + System.currentTimeMillis() + ".mp3", new DownloadCallBack() { + @Override + public void onStart(long total) { + RxLog.d("dsiner_th_onStart: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onStart: -->total: " + total); + } + + @Override + public void onProgresss(long download, long total) { + RxLog.d("dsiner_th_onProgresss: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onProgresss: -->download: " + download + " total: " + total); + } + + @Override + public void onComplete() { + RxLog.d("dsiner_th_onComplete: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onComplete:"); + } + + @Override + public void onError(ApiException e) { + RxLog.d("dsiner_th_onError: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_down onError " + e.getMessage()); + } + }); + } +} diff --git a/app/src/main/java/com/d/rxnet/request/Get.java b/app/src/main/java/com/d/rxnet/request/Get.java new file mode 100644 index 0000000..6256575 --- /dev/null +++ b/app/src/main/java/com/d/rxnet/request/Get.java @@ -0,0 +1,165 @@ +package com.d.rxnet.request; + +import android.app.Activity; +import android.content.Context; + +import com.d.lib.rxnet.RxNet; +import com.d.lib.rxnet.api.API; +import com.d.lib.rxnet.api.RetrofitAPI; +import com.d.lib.rxnet.base.Params; +import com.d.lib.rxnet.exception.ApiException; +import com.d.lib.rxnet.listener.AsyncCallBack; +import com.d.lib.rxnet.listener.SimpleCallBack; +import com.d.lib.rxnet.util.RxLog; +import com.d.rxnet.model.MovieTopModelInfo; + +import java.util.ArrayList; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.functions.Function; +import io.reactivex.observers.DisposableObserver; +import io.reactivex.schedulers.Schedulers; +import okhttp3.ResponseBody; + +/** + * Request Test --> Get + * Created by D on 2017/10/26. + */ +public class Get { + private Context appContext; + + public Get(Activity activity) { + appContext = activity.getApplicationContext(); + } + + public void testAll() { + testIns(); + testNew(); + testObservable(); + testRetrofit(); + } + + public void testIns() { + Params params = new Params(API.MovieTop.rtpType); + params.addParam(API.MovieTop.start, "0"); + params.addParam(API.MovieTop.count, "10"); + RxNet.getInstance(appContext).get(API.MovieTop.rtpType, params) + .request(new SimpleCallBack() { + @Override + public void onSuccess(MovieTopModelInfo response) { + RxLog.d("dsiner_th_onSuccess: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_onSuccess: " + response); + } + + @Override + public void onError(ApiException e) { + RxLog.d("dsiner_onError: "); + } + }); + + RxNet.getInstance(appContext).get("https://www.baidu.com", params) + .request(new AsyncCallBack() { + @Override + public String apply(@NonNull String info) throws Exception { + RxLog.d("dsiner_th_apply: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + return "" + info; + } + + @Override + public void onSuccess(String response) { + RxLog.d("dsiner_th_onSuccess: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_onSuccess: " + response); + } + + @Override + public void onError(ApiException e) { + RxLog.d("dsiner_onError: "); + } + }); + } + + public void testNew() { + Params params = new Params(API.MovieTop.rtpType); + params.addParam(API.MovieTop.start, "1"); + params.addParam(API.MovieTop.count, "10"); + new RxNet(appContext).get("top250", params) + .baseUrl("https://api.douban.com/v2/movie/") + .connectTimeout(5 * 1000) + .readTimeout(5 * 1000) + .writeTimeout(5 * 1000) + .request(new AsyncCallBack() { + @Override + public String apply(@NonNull MovieTopModelInfo movieTopModelInfo) throws Exception { + RxLog.d("dsiner_th_apply: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + int size = movieTopModelInfo.subjects.size(); + return "" + size; + } + + @Override + public void onSuccess(String response) { + RxLog.d("dsiner_th_onSuccess: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_onSuccess: " + response); + } + + @Override + public void onError(ApiException e) { + RxLog.d("dsiner_onError: "); + } + }); + } + + public void testObservable() { + RxNet.getInstance(appContext).get("") + .observable(Boolean.class) + .subscribe(new DisposableObserver() { + @Override + public void onNext(@NonNull Boolean aBoolean) { + + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } + + public void testRetrofit() { + RxNet.getRetrofit(appContext).create(RetrofitAPI.class) + .get("") + .subscribeOn(Schedulers.io()) + .map(new Function>() { + @Override + public ArrayList apply(@NonNull ResponseBody info) throws Exception { + return new ArrayList(); + } + }) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableObserver>() { + @Override + protected void onStart() { + super.onStart(); + } + + @Override + public void onNext(@NonNull ArrayList list) { + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } +} diff --git a/app/src/main/java/com/d/rxnet/request/Post.java b/app/src/main/java/com/d/rxnet/request/Post.java new file mode 100644 index 0000000..c161f70 --- /dev/null +++ b/app/src/main/java/com/d/rxnet/request/Post.java @@ -0,0 +1,150 @@ +package com.d.rxnet.request; + +import android.app.Activity; +import android.content.Context; + +import com.d.lib.rxnet.RxNet; +import com.d.lib.rxnet.api.API; +import com.d.lib.rxnet.api.RetrofitAPI; +import com.d.lib.rxnet.base.Params; +import com.d.lib.rxnet.exception.ApiException; +import com.d.lib.rxnet.listener.AsyncCallBack; +import com.d.lib.rxnet.util.RxLog; +import com.d.rxnet.model.MovieTopModelInfo; + +import java.util.ArrayList; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.functions.Function; +import io.reactivex.observers.DisposableObserver; +import io.reactivex.schedulers.Schedulers; +import okhttp3.ResponseBody; + +/** + * Request Test --> Post + * Created by D on 2017/10/26. + */ +public class Post { + private Context appContext; + + public Post(Activity activity) { + appContext = activity.getApplicationContext(); + } + + public void testAll() { + testIns(); + testNew(); + testObservable(); + testRetrofit(); + } + + public void testIns() { + Params params = new Params(API.MovieTop.rtpType); + params.addParam(API.MovieTop.start, "0"); + params.addParam(API.MovieTop.count, "10"); + RxNet.getInstance(appContext).post(API.MovieTop.rtpType, params) + .request(new AsyncCallBack() { + @Override + public String apply(@NonNull String info) throws Exception { + RxLog.d("dsiner_th_apply: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + return "" + info; + } + + @Override + public void onSuccess(String response) { + RxLog.d("dsiner_th_onSuccess: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_onSuccess: " + response); + } + + @Override + public void onError(ApiException e) { + RxLog.d("dsiner_onError: "); + } + }); + } + + public void testNew() { + Params params = new Params(API.MovieTop.rtpType); + params.addParam(API.MovieTop.start, "1"); + params.addParam(API.MovieTop.count, "10"); + new RxNet(appContext).post("top250", params) + .baseUrl("https://api.douban.com/v2/movie/") + .connectTimeout(5 * 1000) + .readTimeout(5 * 1000) + .writeTimeout(5 * 1000) + .request(new AsyncCallBack() { + @Override + public String apply(@NonNull MovieTopModelInfo movieTopModelInfo) throws Exception { + RxLog.d("dsiner_th_apply: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + int size = movieTopModelInfo.subjects.size(); + return "" + size; + } + + @Override + public void onSuccess(String response) { + RxLog.d("dsiner_th_onSuccess: " + Thread.currentThread().getId() + "--NAME--" + Thread.currentThread().getName()); + RxLog.d("dsiner_onSuccess: " + response); + } + + @Override + public void onError(ApiException e) { + RxLog.d("dsiner_onError: "); + } + }); + } + + public void testObservable() { + RxNet.getInstance(appContext).post("") + .observable(Boolean.class) + .subscribe(new DisposableObserver() { + @Override + public void onNext(@NonNull Boolean aBoolean) { + + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } + + public void testRetrofit() { + RxNet.getRetrofit(appContext).create(RetrofitAPI.class) + .post("") + .subscribeOn(Schedulers.io()) + .map(new Function>() { + @Override + public ArrayList apply(@NonNull ResponseBody info) throws Exception { + return new ArrayList(); + } + }) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableObserver>() { + @Override + protected void onStart() { + super.onStart(); + } + + @Override + public void onNext(@NonNull ArrayList list) { + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 721d028..a36bb4d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,18 +1,88 @@ - + android:orientation="vertical" + android:padding="12dp"> - + android:gravity="center" + android:padding="12dp" + android:text="Get" + android:textSize="14dp" /> - +