Обработка ошибки запроса в Retrofit

Рейтинг: 0Ответов: 1Опубликовано: 03.02.2015

Добрый день!

Немного вступления. В общем, на днях наткнулся на библиотеку Retrofit. Почитав про нее, решил попробовать, что это такое. И наткнулся на такую ситуацию, которую, к сожалению, решить не могу. В момент, когда сервер возвращает ошибку, необходимо ее корректно распарсить и получить сообщение.

Responce выглядит таким образом:

"Data": {null},
"ErrorCode": 1000,
"Status": 0,
"Message": "sample string 1",
"Exception": {
  "ClassName": "System.Exception",
}

Для распарсивания создан класс:

@JsonIgnoreProperties(ignoreUnknown = true)
public class BaseResponse
{
    /**
     * Error request id
     */
    @JsonProperty("ErrorCode")
    public int      errorId;

    /**
     *  Equals true if the request is successful
     */
    public boolean  isSuccess;

    /**
     * Request Message
     */
    @JsonProperty("Message")
    public String   message;

    @JsonProperty("Status")
    public void setResult(int result)
    {
        isSuccess = result == 1;
    }
}

Вопрос заключается в следующем: каким образом можно получить объект BaseResponse из RetrofitError? Может, кто пробовал реализовать подобное и просто наставит на путь истинный.

Ответы

▲ 1
String json =  new String(((TypedByteArray)error.getResponse().getBody()).getBytes());
ObjectMapper mapper = new ObjectMapper();
BaseResponse model = mapper.readValue(json, BaseResponse.class);