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

Lan*_*nce 1 java android retrofit

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

        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
            }
        });
Run Code Online (Sandbox Code Playgroud)

Dav*_*jak 5

Callback.onFailure仅在缺少互联网连接或无效 https 等异常情况下才会被调用。

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

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

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