Search code examples
androiderror-handlingretrofitresponsehttp-status-code-422

How to fetch the error message from 422 Unprocessable Entity response


I make an api call which returns me this

Response{protocol=http/1.1, code=422, message=Unprocessable Entity, url=https://someapi/endpoint}

In the logs, along with the response i get the following:

{"message":"Validation Failed","errors":{"email":["has already been taken"]}}

I'm working on an Android app that has a profile creation feature and I want to redirect the user back so it can change its email address when I receive this response but for that I need to fetch and handle the "errors" message.

How can i get the message from the error body ? I've tried like this:

response.message()

But I get only

Unprocessable Entity


Solution

  • Try like below

     .subscribe(res-> {
                          //success case
    
                        },
                        t -> {
                            if (t instanceof HttpException) {
                               if (((HttpException) t).code() == 422) {
                               String errorResponse=((HttpException) t).response().errorBody().string();
                             //your validations
                            }
                            } else {
    
                                t.printStackTrace();
    
                            }
                        });
    

    I hope it's will help you :-)