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