app/build.gradle
@@ -70,8 +70,8 @@ implementation 'com.ansen.http:okhttpencapsulation:1.0.1'//版本更新下载 implementation 'com.squareup.okhttp3:okhttp:4.9.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0' //RXjava和retrofit结合 implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.0.2' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0' //RXjava和retrofit结合 implementation 'com.permissionx.guolindev:permissionx:1.2.2' //权限依赖让你推广你就发群里?没有别的群了? implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' app/src/main/java/com/duqing/missions/retrofit/Interceptor/HttpLoggingInterceptor.java
@@ -51,13 +51,15 @@ int position = logArrays.size() +2; Response response; try { request = encryptRequest(request);//加密 //request = encryptRequest(request);//加密 response = chain.proceed(request); logArrays.addAll(getResponseLog(response)); Log.d(TAG,"hashcode:"+hashCode); NetWorkCost netWorkCost = NetWorkListenear.workCostMap.get(hashCode); if(netWorkCost != null) { String cost = String.format("dns:%s,secure:%s,connect:%s,requestH:%s,requestB:%s,responseH:%s,responseB:%s", convertTimes(netWorkCost.dns) ,convertTimes(netWorkCost.secure) , convertTimes(netWorkCost.connect),convertTimes(netWorkCost.requestHeader),convertTimes(netWorkCost.requestBody) ,convertTimes(netWorkCost.resposeHeader),convertTimes(netWorkCost.resposeBody) ); logArrays.add(position,"<-- costtimes : "+convertTimes(netWorkCost.total)+" (" +cost + ')'); } NetWorkListenear.workCostMap.remove(hashCode); new Thread(){ @Override app/src/main/java/com/duqing/missions/retrofit/api/LoginApiCenter.java
@@ -1,7 +1,8 @@ package com.duqing.missions.retrofit.api; import com.duqing.missions.ui.login.data.model.LoggedInUser; import io.reactivex.Observable; import retrofit2.Call; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; @@ -13,9 +14,5 @@ @FormUrlEncoded @POST("api/v1/login") Observable<Object> login(@Field("paramString") String str); @FormUrlEncoded @POST("api/v1/login") Call<Object> loginCall(@Field("paramString") String str); Observable<LoggedInUser> login(@Field("paramsString") String str); } app/src/main/java/com/duqing/missions/ui/login/data/LoginDataSource.java
@@ -1,6 +1,8 @@ package com.duqing.missions.ui.login.data; import com.duqing.missions.retrofit.RetrofitUtils; import com.duqing.missions.retrofit.api.LoginApiCenter; import com.duqing.missions.ui.login.data.model.LoggedInUser; import io.reactivex.Observable; @@ -13,14 +15,7 @@ public class LoginDataSource { public Observable<LoggedInUser> login(String username, String password) { final Observable<LoggedInUser> observable = Observable.create(new ObservableOnSubscribe<LoggedInUser>() { @Override public void subscribe(ObservableEmitter<LoggedInUser> e) throws Exception { LoggedInUser fakeUser = new LoggedInUser( java.util.UUID.randomUUID().toString(), "Jane Doe"); e.onNext(fakeUser); } }); return observable; return RetrofitUtils.getInstance().getRetrofit(LoginApiCenter.class).login(";lajks;dkfjal;ksjdf"); } public Observable<LoggedInUser> loginByCode(String phone, String verifyCode){ app/src/main/java/com/duqing/missions/ui/login/view/LoginActivity.java
@@ -21,12 +21,6 @@ import com.duqing.missions.R; import com.duqing.missions.base.activities.BaseTitleBarActivity; import com.duqing.missions.databinding.ActivityLoginBinding; import com.duqing.missions.retrofit.RetrofitUtils; import com.duqing.missions.retrofit.api.LoginApiCenter; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class LoginActivity extends BaseTitleBarActivity<ActivityLoginBinding,LoginViewModel> { @@ -122,48 +116,7 @@ loginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /*RetrofitUtils.getInstance().getRetrofit(LoginApiCenter.class).login(";lajks;dkfjal;ksjdf") .subscribeOn(Schedulers.io())//指定网络请求在io后台线程中进行 .observeOn(AndroidScheduler.mainThread())//指定observer回调在UI主线程中进行 .subscribe(new io.reactivex.Observer<Object>() { @Override public void onSubscribe(Disposable d) { v.setEnabled(false); Log.d(TAG,"onSubscribe"); } @Override public void onNext(Object value) { Log.d(TAG,"onNext value:"+value); } @Override public void onError(Throwable e) { v.setEnabled(true); Log.d(TAG,"onError "+e.getMessage()); } @Override public void onComplete() { v.setEnabled(true); Log.d(TAG,"onComplete"); } });//发起请求,请求的结果会回调到订阅者observer中*/ RetrofitUtils.getInstance().getRetrofit(LoginApiCenter.class).loginCall("asdfasdfasdfasdfasdf").enqueue(new Callback<Object>() { @Override public void onResponse(Call<Object> call, Response<Object> response) { } @Override public void onFailure(Call<Object> call, Throwable t) { } }); viewModel.login(phoneEdit.getText().toString(),passwordEditText.getText().toString()); } }); app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java
@@ -8,6 +8,7 @@ import androidx.lifecycle.ViewModel; import com.duqing.missions.R; import com.duqing.missions.retrofit.AndroidScheduler; import com.duqing.missions.ui.login.data.LoginRepository; import com.duqing.missions.ui.login.data.model.LoggedInUser; @@ -15,6 +16,7 @@ import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.observers.DisposableObserver; import io.reactivex.schedulers.Schedulers; public class LoginViewModel extends ViewModel { @@ -39,7 +41,9 @@ public void login(String username, String password) { // can be launched in a separate asynchronous job Observable<LoggedInUser> result = loginRepository.login(username, password); result.doOnSubscribe(new Consumer<Disposable>() { result.subscribeOn(Schedulers.io())//指定网络请求在io后台线程中进行 .observeOn(AndroidScheduler.mainThread())//指定observer回调在UI主线程中进行 .doOnSubscribe(new Consumer<Disposable>() { @Override public void accept(Disposable disposable) throws Exception {