Retrofit 2.0 - How to get response body for 400 Bad Request error?

前端 未结 9 2058
旧巷少年郎
旧巷少年郎 2021-01-31 02:33

So when I make a POST API call to my server, I get a 400 Bad Request error with JSON response.

{
    \"userMessage\": \"Blah\",
    \"internalMessage\": \"Bad Re         


        
9条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-31 03:09

    First step:

    Create your POJO class for error response. In my case, ApiError.java

    public class ApiError {
    
        @SerializedName("errorMessage")
        @Expose
        private String errorMessage;
    
        public String getErrorMessage() {
            return errorMessage;
        }
    
        public void setErrorMessage(String errorMessage) {
            this.errorMessage= errorMessage;
        }
    }
    

    Second Step:

    Write below code in your api callback.

    Call.enqueue(new Callback() {
         @Override
         public void onResponse(Call call, Response response) 
         {
             if (response.isSuccessful()) {
                 // do your code here
             } else if (response.code() == 400) {
                 Converter converter =
                                ApiClient.retrofit.responseBodyConverter(ApiError.class, new Annotation[0]);
    
                        ApiError error;
    
                        try {
                            error = converter.convert(response.errorBody());
                            Log.e("error message", error.getErrorMessage());
                            Toast.makeText(context, error.getErrorMessage(), Toast.LENGTH_LONG).show();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
             }
         }
    
         @Override
         public void onFailure(Call call, Throwable t) {
             //do your failure handling code here
         }
    }
    

    Here ApiClient.retrofit is your retrofit instance which is static.

提交回复
热议问题