【发布时间】:2021-02-04 00:17:57
【问题描述】:
在我的应用程序中,我想从服务器获取一些数据,为此我使用了 retrofit。
我想显示错误消息,但调用 Api 后显示强制关闭错误。
因为response.body 是null!
我的 json 是:
{"data":{},"meta":{"error_message":"\u0644\u0637\u0641\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f","error_type":"OAuthPermissionsException","validation_error":null,"code":401}}
我的数据模型是:
data class ResponseModelRegister(
@SerializedName("data")
val `data`: Data = Data(),
@SerializedName("meta")
val meta: BaseResponseMeta = BaseResponseMeta()
)
我为调用 Api 编写以下代码:
override fun callRegister(auth: String, accept: String, contentType: String, body: BodyModelRegister) {
if (view.checkNetworkConnection()) {
view.showLoader()
disposable = ApiClient.getInstance().apisUseCase()
.getRegisterUser(auth, accept, contentType, body)
.applyIoScheduler()
.subscribe({ response ->
view.hideLoader()
when (response.code()) {
in 200..202 -> {
response.body()?.let { itBody ->
if (itBody.data.role == STAFF_PROFILE) {
view.gotoStaffNextPage()
} else if (itBody.data.role == CUSTOMER_PROFILE) {
view.gotoCustomerNextPage()
}
}
}
in 400..499 -> {
Log.e("errMessageIS", response.body().toString())
response.body()?.meta?.let {
view.serverError(it.errorMessage)
}
}
in 500..599 -> {
view.responseCodeError()
}
}
}, { error ->
view.hideLoader()
view.responseError(error)
})
}
}
Logcat 消息:E/errMessageIS: null
为什么显示 null?错误代码为 401 时如何访问元字段?
【问题讨论】:
-
检查你是否有类似
errorBody()而不是body() -
@P.Juni in errorBody,我如何访问我的元模型?
标签: android kotlin retrofit retrofit2