Android onFailure方法中的OkHttp响应状态代码

Android onFailure方法中的OkHttp响应状态代码,android,okhttp,okhttp3,Android,Okhttp,Okhttp3,当我以如下异步方式使用OkHttp库时: call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response)

当我以如下异步方式使用OkHttp库时:

call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            e.printStackTrace();
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {

        }
    });
在onFailure方法中,我如何获得响应状态代码来区分不同的错误。例如,网络错误或服务器错误?

根据上面的链接,当且仅当客户端出现问题时,才会调用
onFailure()


如果请求已成功传递,但存在服务器问题,则可以检查
response.issusccessful()
。如果返回false,请检查
response.code()
,并处理错误。

据我所知,
onFailure
会在没有响应时触发。因此,如果您收到错误,将调用onResponse。您可以在
onResponse
中执行类似操作:

@Override
public void onResponse(Call call, Response response) throws IOException {
    switch(response.code()){
    //your desired catched codes here.

   }
}
对于
onResponse
方法:

请注意,传输层成功(接收HTTP响应代码、头和正文)并不一定表示应用层成功:响应可能仍然表示不满意的HTTP响应代码,如404或500


您可以使用
response.code()

您还可以使用
response.message()
获取更多信息

onFaliure方法只覆盖超时等异常。。如果您想捕获400这样的响应错误,可以从onResponse方法response.code()中获取状态代码