Retrofit不调用失败,response.code()为400

时间:2017-06-06 21:09:25

标签: java android retrofit

我确定我在这里做的事情有问题。即使我得到的代码是400,改造也不会失败。

        AuthenticationService authService = retrofit.create(AuthenticationService.class);
        Call<ValidateTokenResponseMessage> request = authService.validateToken(token);
        request.enqueue(new Callback<ValidateTokenResponseMessage>() {
            @Override
            public void onResponse(Call<ValidateTokenResponseMessage> call, retrofit2.Response<ValidateTokenResponseMessage> response) {
            // When I try to put a breakpoint here I can see that response.code() is 400. 
                ValidateTokenResponseMessage body = response.body();
                if (!body.getValidToken()) {
                    // do success 
                }
            }

            @Override
            public void onFailure(Call<ValidateTokenResponseMessage> call, Throwable t) {
                // do failure
            }
        });

1 个答案:

答案 0 :(得分:4)

Callback.onFailure只会因缺少互联网连接或无效的https等异常而被调用。

  

在发生网络异常时与服务器通信或在创建请求或处理响应时发生意外异常时调用。

要检查错误,您必须使用Response.isSuccessful()

  

如果code()在[200..300)范围内,则返回true。