Модификация с Rx Java - пользовательский класс данных об ошибках - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть API, который отправляет мне ошибки с пользовательской JSON ниже 500 ошибка

, вот мой интерфейс API:

  @POST("${API_PREFIX}method")
  fun callForIt(@Body request: MyRequest) : Single<MyResponse>

И вот как я это называю:

api.callForIt(request)
   .observeOn(AndroidSchedulers.mainThread())
   .subscribe(
     {
      // Here I get perfect MyResponse object
     },
     {
      // And here I get only throwable, but need to get info from the json
     })

Итак, я хочу описать собственный класс данных, такой как

data class ErrorResponse(
  val type: String,
  val fatal: Boolean,
  val msg: String
// etc
)

, потому что сервер отправляет мне ценную информацию в JSON, и мне нужно ее получить, поэтому есть ли способ прочитать его из onFailure()?

1 Ответ

1 голос
/ 06 апреля 2020
{ t: Throwable ->
    if (t is HttpException) {
        val errorMsg = t.response()!!.errorBody()!!.string()
        val errorResponse = Gson().fromJson(errorMsg, ErrorResponse::class)
        // handle the error with errorResponse...
    }
    else {
        // handle the error with code >=500...
    }
}
...