android 网络请求超时简单处理(基于rxjava)

implementation ‘com.squareup.retrofit2:adapter-rxjava:2.1.0’

public class ExceptionHandle {
private static final int UNAUTHORIZED = 401;
private static final int FORBIDDEN = 403;
private static final int NOT_FOUND = 404;
private static final int REQUEST_TIMEOUT = 408;
private static final int INTERNAL_SERVER_ERROR = 500;
private static final int BAD_GATEWAY = 502;
private static final int SERVICE_UNAVAILABLE = 503;
private static final int GATEWAY_TIMEOUT = 504;

public static ResponeThrowable handleException(Throwable e) {
    ResponeThrowable ex;
    if (e instanceof HttpException) {
        HttpException httpException = (HttpException) e;
        ex = new ResponeThrowable(e, ERROR.HTTP_ERROR);
        switch (httpException.code()) {
            case UNAUTHORIZED:
            case FORBIDDEN:
            case NOT_FOUND:
            case REQUEST_TIMEOUT:
            case GATEWAY_TIMEOUT:
            case INTERNAL_SERVER_ERROR:
            case BAD_GATEWAY:
            case SERVICE_UNAVAILABLE:
            default:
                //ex.code = httpException.code();
                ex.message = "网络错误";
                break;
        }
        return ex;
    } else if (e instanceof java.net.UnknownHostException) {
        ex = new ResponeThrowable(e, ERROR.SSL_ERROR);
        ex.message = "网络错误";

        return ex;
    } else {
        ex = new ResponeThrowable(e, ERROR.UNKNOWN);
        ex.message = "未知错误";

        return ex;
    }
}

class ERROR {
    /**
     * 未知错误
     */
    public static final int UNKNOWN = 1000;
    /**
     * 协议出错
     */
    public static final int HTTP_ERROR = 1003;

    /**
     * 网络错误
     */
    public static final int SSL_ERROR = 1005;
}

public static class ResponeThrowable extends Exception {
    public int code;
    public String message;

    public ResponeThrowable(Throwable throwable, int code) {
        super(throwable);
        this.code = code;
    }
}

}

//使用
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext() {
             
                    }

                    @Override
                    public void onError(Throwable e) {
                    if(e instanceof Exception){
                            //访问获得对应的Exception
                            Log.i("TAG",":code::"+ ExceptionHandle.handleException(e).code);
                            Log.i("TAG","message"+ ExceptionHandle.handleException(e).message);
                        }
                    }

                    @Override
                    public void onComplete() {

                    }
                });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值