100 lines
2.5 KiB
Java
100 lines
2.5 KiB
Java
package com.viontv.app.api;
|
|
|
|
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 io.reactivex.observers.DisposableObserver;
|
|
import retrofit2.HttpException;
|
|
|
|
public abstract class VTBaseObserver1<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) {
|
|
VTResult1 model = (VTResult1) o;
|
|
if (model.code == 0) {
|
|
onSuccess(o);
|
|
} else {
|
|
onError(model.code, model.msg);
|
|
}
|
|
}
|
|
|
|
@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);
|
|
|
|
}
|