统一Retrofit失败的处理情况

import android.content.Context;
import android.widget.Toast;

import java.io.IOException;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

/**
 * Created by xiaolei on 2017/3/2.
 */

public abstract class ICallBack<T> implements Callback<T>
{
    private Context context;
    public ICallBack(Context context)
    {
        this.context = context;
    }
    public abstract void onSuccess(T result) throws Exception;
    public abstract void onField(Call<T> call, Throwable t);
    public abstract void onFinally();
    
    @Override
    public void onResponse(Call<T> call, Response<T> response)
    {
        try
        {
            if(response.isSuccessful())
            {
                onSuccess(response.body());
            }else
            {
                onFailure(call,new IOException(response.code()+""));
            }
        }catch (Exception e)
        {
            onFailure(call,new IOException(response.code()+""));
        }finally
        {
            onFinally();
        }
    }

    @Override
    public void onFailure(Call<T> call, Throwable t)
    {
        try
        {
            if(context != null)
            {
                Toast.makeText(context, "t:" + t, Toast.LENGTH_SHORT).show();
            }
            onField(call,t);
        }finally
        {
            onFinally();
        }
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏javathings

Spring 中实现事务的方式

Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,Spring 只不过简化了开发人员实现事务的步骤。 Spring 提供了两种...

213
来自专栏听Allen瞎扯淡

CompletionService小技巧

在上一篇blogs中,我详细的解释了CompletionService的使用方法和ExecutorCompletionService的详细实现,这篇blogs中...

673
来自专栏Netkiller

Java 反射,开发框架必备技能

反射一般开发者接触不到,反射主要用户框架的开发。例如我举一个例子你就明白了: http://www.netkiller.cn/news/list/2.html...

2695
来自专栏james大数据架构

在Android中调用WebService

某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这...

2115
来自专栏Android开发指南

9.indicate、xutils、json

35813
来自专栏向治洪

android异步操作

为了使UI在数据获取时不僵死,数据获取需要在新开Worker线程中进行,然后将返回结果在UI线程中进行读取并渲染页面。面对这种异步处理,到底如何写才简洁,先后面...

1868
来自专栏码匠的流水账

聊聊rocketmq的AsyncAppender

org/apache/rocketmq/logging/inner/LoggingBuilder.java

491
来自专栏Android开发指南

6.后台任务封装

2697
来自专栏java系列博客

aop 两种代理方式初探

1753
来自专栏james大数据架构

时钟AnalogClock与DigitalClock

1. 获得当前年月日时分 1 Calendar cal = Calendar.getInstance(); 2 year = c...

1876

扫码关注云+社区