From fa67d4417ec6949183038f99dff517f5e3c7cda6 Mon Sep 17 00:00:00 2001
From: nilupeng <qingingrunt2010@qq.com>
Date: Sun, 30 Jan 2022 05:03:48 +0000
Subject: [PATCH] 加密调整

---
 app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java |   49 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 38 insertions(+), 11 deletions(-)

diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java b/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java
index b02e526..3a4ac2c 100644
--- a/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java
+++ b/app/src/main/java/com/runt/open/mvvm/retrofit/observable/HttpObserver.java
@@ -1,35 +1,40 @@
 package com.runt.open.mvvm.retrofit.observable;
 
+import android.accounts.NetworkErrorException;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
 import androidx.lifecycle.MutableLiveData;
 
 
 import com.runt.open.mvvm.data.BaseApiResult;
 
+import java.io.IOException;
 import java.lang.reflect.ParameterizedType;
 import java.net.SocketTimeoutException;
 
+import io.reactivex.SingleObserver;
 import io.reactivex.observers.DisposableObserver;
+import retrofit2.Response;
 
 /**
  * 网络请求观察
  * Created by Administrator on 2021/11/11 0011.
  */
-public abstract class HttpObserver<T extends BaseApiResult> extends DisposableObserver<T>{
+public abstract class HttpObserver<M extends BaseApiResult> extends DisposableObserver<Response<M>> implements SingleObserver<Response<M>> {
 
     final String TAG = "HttpObserver";
 
-    MutableLiveData<T> resultLive;
+    MutableLiveData<M> resultLive;
 
-    public HttpObserver(MutableLiveData<T> resultLive) {
+    public HttpObserver(MutableLiveData<M> resultLive) {
         this.resultLive = resultLive;
     }
 
 
     @Override
-    public void onNext(T value) {
-        resultLive.setValue(value);
+    public void onNext(Response<M> response) {
+        onExcuted(response);
     }
 
     @Override
@@ -37,25 +42,27 @@
         Log.i("subscribe","onError");
 
         try {
-            Log.e(TAG,this.getClass().getSimpleName()+" "+throwable.getMessage());
-            Class<T> entityClass = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
-            T t = entityClass.newInstance();//实例化一个泛型
+            Log.e(TAG,this.getClass().getSimpleName()+" mes:"+throwable.getMessage());
+            Class<M> entityClass = (Class<M>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
+            M t = entityClass.newInstance();//实例化一个泛型
             t.code = 410;
             if( throwable instanceof SocketTimeoutException){
                 t.msg = "服务请求超时,请稍候再试";//设置错误信息
-            }else{
+            }else  if( throwable instanceof NetworkErrorException){
                 t.msg = "网络连接不畅,请检查您的网络设置";//设置错误信息
+            }else{
+                t.msg = throwable.getMessage();//设置错误信息
             }
             resultLive.setValue(t);
         } catch (ClassCastException e) {
             e.printStackTrace();
-            T t = (T) new BaseApiResult<String>();
+            M t = (M) new BaseApiResult<String>();
             t.code = 409;
             t.msg = "实例化对象未指定泛型实体类";
             resultLive.setValue(t);
         } catch (Exception e) {
             e.printStackTrace();
-            T t = (T) new BaseApiResult<String>();
+            M t = (M) new BaseApiResult<String>();
             t.code = 409;
             t.msg = e.getMessage();
             resultLive.setValue(t);
@@ -63,7 +70,27 @@
     }
 
     @Override
+    public void onSuccess(Response<M> response) {
+        onExcuted(response);
+    }
+
+    private void onExcuted(@NonNull Response<M> response){
+
+        if(response.body() != null){
+            resultLive.setValue(response.body());
+        }else{
+            try {
+                String error = response.errorBody().string();
+                Log.i("subscribe","onExcuted "+error);
+                onError(new Throwable(error));
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+    @Override
     public void onComplete() {
         Log.i("subscribe","onComplete");
     }
+
 }

--
Gitblit v1.9.1