Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting json from retrofit's response errorBody

I am struggling with retrofit. When I post a request in my browser i get such a request: enter image description here

And that's what I expect. However, when I try to parse this in my app I kept getting responses as in this thread. I've found tried to implement this solution, but my errorBody does not even resemble the answer from my browser: enter image description here How can I get this JSON?

Just in case this is my response handler code:

void handleResponse(Response response){
    TextView textView = (TextView)findViewById(R.id.empty_list_tv);
    if(response.isSuccessful())
        textView.setText(response.toString());
    else {
        Gson gson = new Gson();
        ErrorResponse errorResponse = gson.fromJson(
                response.errorBody().toString(),
                ErrorResponse.class);
        textView.setText(response.errorBody().toString());
    }
}

And my ErrorResponse:

public class ErrorResponse {
    @SerializedName("message")
    private String message;
    @SerializedName("error")
    private Error error;

    public String getMessage() {
        return message;
    }

    public Error getError() {
        return error;
    }
}
like image 981
gonczor Avatar asked Mar 06 '17 15:03

gonczor


1 Answers

You are using toString() in GSON's fromJson which is not a JSON content. Replace your toString() as string() which will give you the JSON body. Also make sure to use the string() method only once and save the response in a variable, because it will return empty string if you used it again.

like image 59
Coder Avatar answered Sep 23 '22 11:09

Coder