Retrofit 2.0 how to get deserialised error response.body

前端 未结 21 2222
庸人自扰
庸人自扰 2020-11-28 02:46

I\'m using Retrofit 2.0.0-beta1.

In tests i have an alternate scenario and expect error HTTP 400

I would like to have retrofit.Respons

21条回答
  •  失恋的感觉
    2020-11-28 03:18

    val error = JSONObject(callApi.errorBody()?.string() as String)
                CustomResult.OnError(CustomNotFoundError(userMessage = error["userMessage"] as String))
    
    open class CustomError (
        val traceId: String? = null,
        val errorCode: String? = null,
        val systemMessage: String? = null,
        val userMessage: String? = null,
        val cause: Throwable? = null
    )
    
    open class ErrorThrowable(
        private val traceId: String? = null,
        private val errorCode: String? = null,
        private val systemMessage: String? = null,
        private val userMessage: String? = null,
        override val cause: Throwable? = null
    ) : Throwable(userMessage, cause) {
        fun toError(): CustomError = CustomError(traceId, errorCode, systemMessage, userMessage, cause)
    }
    
    
    class NetworkError(traceId: String? = null, errorCode: String? = null, systemMessage: String? = null, userMessage: String? = null, cause: Throwable? = null):
        CustomError(traceId, errorCode, systemMessage, userMessage?: "Usted no tiene conexión a internet, active los datos", cause)
    
    class HttpError(traceId: String? = null, errorCode: String? = null, systemMessage: String? = null, userMessage: String? = null, cause: Throwable? = null):
        CustomError(traceId, errorCode, systemMessage, userMessage, cause)
    
    class UnknownError(traceId: String? = null, errorCode: String? = null, systemMessage: String? = null, userMessage: String? = null, cause: Throwable? = null):
        CustomError(traceId, errorCode, systemMessage, userMessage?: "Unknown error", cause)
    
    class CustomNotFoundError(traceId: String? = null, errorCode: String? = null, systemMessage: String? = null, userMessage: String? = null, cause: Throwable? = null):
        CustomError(traceId, errorCode, systemMessage, userMessage?: "Data not found", cause)`
    

提交回复
热议问题