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