From dadbf7a3fd20a8e0dc7e0601f30a2f696cc9fc6e Mon Sep 17 00:00:00 2001 From: Administrator <123> Date: Thu, 11 Nov 2021 02:40:05 +0000 Subject: [PATCH] 完成登录接口接入demo --- app/src/main/java/com/duqing/missions/retrofit/api/LoginApiCenter.java | 9 +--- app/src/main/java/com/duqing/missions/ui/login/view/LoginActivity.java | 49 ------------------------ app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java | 38 ++++++++++-------- app/src/main/java/com/duqing/missions/ui/login/data/LoginDataSource.java | 11 +---- app/src/main/java/com/duqing/missions/retrofit/Interceptor/HttpLoggingInterceptor.java | 8 ++- app/build.gradle | 4 +- 6 files changed, 35 insertions(+), 84 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6fe0e3c..b604268 100644 --- a/app/build.gradle +++ b/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' diff --git a/app/src/main/java/com/duqing/missions/retrofit/Interceptor/HttpLoggingInterceptor.java b/app/src/main/java/com/duqing/missions/retrofit/Interceptor/HttpLoggingInterceptor.java index 9d0f496..eca8f17 100644 --- a/app/src/main/java/com/duqing/missions/retrofit/Interceptor/HttpLoggingInterceptor.java +++ b/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); - 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 + ')'); + 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 diff --git a/app/src/main/java/com/duqing/missions/retrofit/api/LoginApiCenter.java b/app/src/main/java/com/duqing/missions/retrofit/api/LoginApiCenter.java index f061e10..e058c02 100644 --- a/app/src/main/java/com/duqing/missions/retrofit/api/LoginApiCenter.java +++ b/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); } diff --git a/app/src/main/java/com/duqing/missions/ui/login/data/LoginDataSource.java b/app/src/main/java/com/duqing/missions/ui/login/data/LoginDataSource.java index 1fb4877..4a8b609 100644 --- a/app/src/main/java/com/duqing/missions/ui/login/data/LoginDataSource.java +++ b/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){ diff --git a/app/src/main/java/com/duqing/missions/ui/login/view/LoginActivity.java b/app/src/main/java/com/duqing/missions/ui/login/view/LoginActivity.java index 93e7ac4..0d13e13 100644 --- a/app/src/main/java/com/duqing/missions/ui/login/view/LoginActivity.java +++ b/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()); } }); diff --git a/app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java b/app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java index d963549..d24f341 100644 --- a/app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java +++ b/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,28 +41,30 @@ 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>() { - @Override - public void accept(Disposable disposable) throws Exception { + result.subscribeOn(Schedulers.io())//指定网络请求在io后台线程中进行 + .observeOn(AndroidScheduler.mainThread())//指定observer回调在UI主线程中进行 + .doOnSubscribe(new Consumer<Disposable>() { + @Override + public void accept(Disposable disposable) throws Exception { - } - }).subscribe(new DisposableObserver<LoggedInUser>(){ + } + }).subscribe(new DisposableObserver<LoggedInUser>(){ - @Override - public void onNext(LoggedInUser value) { - loginResult.setValue(new LoginResult((new LoggedInUserView(value.getDisplayName())))); - } + @Override + public void onNext(LoggedInUser value) { + loginResult.setValue(new LoginResult((new LoggedInUserView(value.getDisplayName())))); + } - @Override - public void onError(Throwable e) { - loginResult.setValue(new LoginResult(R.string.login_failed)); - } + @Override + public void onError(Throwable e) { + loginResult.setValue(new LoginResult(R.string.login_failed)); + } - @Override - public void onComplete() { + @Override + public void onComplete() { - } - }); + } + }); } public void loginDataChanged(String username, String password) { -- Gitblit v1.9.1