使用Retrofit处理服务器错误

时间:2015-06-01 08:29:58

标签: android retrofit

如果你和我分享一些知识会很棒!这是我的问题 - 我们有一个Android应用程序。和服务器。对于一些呼叫,客户端需要从服务器发送先前获得的令牌,该令牌在有限的时间内是合法的。如果令牌不再有效,则从服务器返回错误,需要获取新令牌,我们需要重试该请求。

但是我如何使用Retrofit处理这种行为?有什么想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果回调失败并且错误消息是需要获取令牌,那么您尝试使用回调进行请求,然后您执行获取新令牌的请求,例如:

        connectionInterface.getSomeStuff(object, new Callback<ObjectPOJO>() {
            @Override
            public void success(ObjectPOJO objectPOJO, Response response) {
                //success
            }

            @Override
            public void failure(RetrofitError error) {
                if (error.getLocalizedMessage().equals("Token expire error")
                    connectionInterface.getToken();
            }

然后在你的改装getToken回调中,如果成功,你将重做getSomeStuff方法,如果失败,你就让用户知道。例如:

        connectionInterface.getToken(token, new Callback<token>() {
            @Override
            public void success(token token, Response response) {
                //success and token has been added
                //add the token to your request somehow...
                connectionInterface.updateToken(token);
                connectionInterface.getSomeStuff();
            }

            @Override
            public void failure(RetrofitError error) {
                //error let user know
            }

如果您有任何其他问题,请与我们联系。我认为这将是最简单的方法。