131 lines
3.4 KiB
Java
131 lines
3.4 KiB
Java
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<T> extends DisposableObserver<T> {
|
|
/**
|
|
* 解析数据失败
|
|
*/
|
|
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);
|
|
}
|