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" /> - +