package com.dskj.cashly.api; import android.content.Intent; import com.dskj.cashly.InitApp; import com.dskj.cashly.bean.BankBean; import com.dskj.cashly.ui.activity.LoginActivity; import com.google.gson.JsonParseException; import org.json.JSONException; import java.io.InterruptedIOException; import java.net.ConnectException; import java.net.UnknownHostException; import java.text.ParseException; import java.util.List; import io.reactivex.observers.DisposableObserver; import retrofit2.HttpException; public abstract class BaseObserver extends DisposableObserver { /** * 解析数据失败 */ public static final int PARSE_ERROR = 1001; /** * 网络问题 */ public static final int BAD_NETWORK = 1002; /** * 连接错误 */ public static final int CONNECT_ERROR = 1003; /** * 连接超时 */ public static final int CONNECT_TIMEOUT = 1004; @Override public void onNext(T o) { try { Result model = (Result) o; if (model.code == 1) { onSuccess(o); } else { onError(model.code,model.msg); if(model.code == -996){ InitApp.setToken(""); InitApp.setUserToken(""); reStart(); } } } catch (Exception e) { e.printStackTrace(); onError(407,e.toString()); } } /*** 重新启动应用*/ public void reStart(){ Intent launch= InitApp.getAppContext().getPackageManager() .getLaunchIntentForPackage(InitApp.getAppContext() .getPackageName()); launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); InitApp.getAppContext().startActivity(launch); } @Override public void onError(Throwable e) { if (e instanceof HttpException) { // HTTP错误 onException(BAD_NETWORK); } else if (e instanceof ConnectException || e instanceof UnknownHostException) { // 连接错误 onException(CONNECT_ERROR); } else if (e instanceof InterruptedIOException) { // 连接超时 onException(CONNECT_TIMEOUT); } else if (e instanceof JsonParseException || e instanceof JSONException || e instanceof ParseException) { // 解析错误 onException(PARSE_ERROR); } else { if (e != null) { onError(409,e.toString()); } else { onError(407,"未知錯誤"); } } } private void onException(int unknownError) { switch (unknownError) { case CONNECT_ERROR: onError(CONNECT_ERROR,"連接錯誤"); break; case CONNECT_TIMEOUT: onError(CONNECT_TIMEOUT,"連接超時"); break; case BAD_NETWORK: onError(BAD_NETWORK,"網絡問題"); break; case PARSE_ERROR: onError(PARSE_ERROR,"數據解析异常"); break; default: break; } } @Override public void onComplete() { } public abstract void onSuccess(T o); public abstract void onError(int code,String msg); }