且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Retrofit 2.0-如何获取400 Bad Request错误的响应正文?

更新时间:2021-08-25 23:04:46

您可以在 onResponse 方法中进行操作,请记住 400 是响应状态,不是错误:

You can do it in your onResponse method, remember 400 is a response status not an error:

if (response.code() == 400) {              
    Log.v("Error code 400",response.errorBody().string());
}

您可以使用 Gson 来处理除200-300 之外的任何响应代码,如下所示:

And you can handle any response code except 200-300 with Gson like that:

if (response.code() == 400) {
   Gson gson = new GsonBuilder().create();
   ErrorPojoClass mError=new ErrorPojoClass();
   try {
       mError= gson.fromJson(response.errorBody().string(),ErrorPojoClass.class);
       Toast.makeText(context, mError.getDescription(), Toast.LENGTH_LONG).show();
   } catch (IOException e) {
       // handle failure to read error
   }        
}

将此添加到您的 build.gradle 中:编译'com.google.code.gson:gson:2.7'

如果要创建 Pojo 类,请转到 Json Schema 2 Pojo 并粘贴您的示例 Json 响应.选择源类型 Json 和注释 Gson .

If you want create Pojo class go to Json Schema 2 Pojo and paste your example Json response. Select source type Json and annotation Gson .