Android 有没有办法在onError分支中获取数据模型?
我通过改造和RXJava从API获取数据模型。模型包含带有自定义消息的错误字符串Android 有没有办法在onError分支中获取数据模型?,android,kotlin,retrofit,rx-java2,Android,Kotlin,Retrofit,Rx Java2,我通过改造和RXJava从API获取数据模型。模型包含带有自定义消息的错误字符串 {“数据”:[],“错误”:[{“代码”:168,“消息”:“数字超出范围”}]} 订阅功能: subscribe({ eventLiveData.value = SubmitFinished }, { // it: Throwable! eventLiveData.value = SubmitResponseError // I want to have my o
{“数据”:[],“错误”:[{“代码”:168,“消息”:“数字超出范围”}]}
订阅功能:
subscribe({
eventLiveData.value = SubmitFinished
}, { // it: Throwable!
eventLiveData.value = SubmitResponseError
// I want to have my object here!
})
有没有办法让我的对象在onError分支中有错误代码?
谢谢你是的,
onError
你得到了Throwable
对象,你可以将它强制转换为HttpException
data class Data(
@SerializedName("content") val content: String
)
data class Error(
@SerializedName("code") val code: Int,
@SerializedName("message") val message: String,
)
data class Response(
@SerializedName("data") val data: List<Data>,
@SerializedName("errors") val errors: List<Error>
)
fun onError(e: Throwable): List<Error>? {
return try {
val httpException = e as? HttpException
val errors = JSONObject(httpException?.response()?.errorBody()?.string()).get("errors") as List<Error>
} catch (ignore: Exception) {
null
}
}
数据类数据(
@SerializedName(“内容”)val内容:字符串
)
数据类错误(
@SerializedName(“代码”)val代码:Int,
@SerializedName(“消息”)val消息:字符串,
)
数据类响应(
@SerializedName(“数据”)val数据:列表,
@SerializedName(“错误”)val错误:列表
)
有趣的人(e:可丢弃):名单?{
回击{
val httpException=e作为?httpException
val errors=JSONObject(httpException?.response()?.errorBody()?.string()).get(“errors”)作为列表
}捕获(忽略:异常){
无效的
}
}
检查这篇文章:
是的,
onError
您将获得Throwable
对象,您可以将其强制转换为HttpException
data class Data(
@SerializedName("content") val content: String
)
data class Error(
@SerializedName("code") val code: Int,
@SerializedName("message") val message: String,
)
data class Response(
@SerializedName("data") val data: List<Data>,
@SerializedName("errors") val errors: List<Error>
)
fun onError(e: Throwable): List<Error>? {
return try {
val httpException = e as? HttpException
val errors = JSONObject(httpException?.response()?.errorBody()?.string()).get("errors") as List<Error>
} catch (ignore: Exception) {
null
}
}
数据类数据(
@SerializedName(“内容”)val内容:字符串
)
数据类错误(
@SerializedName(“代码”)val代码:Int,
@SerializedName(“消息”)val消息:字符串,
)
数据类响应(
@SerializedName(“数据”)val数据:列表,
@SerializedName(“错误”)val错误:列表
)
有趣的人(e:可丢弃):名单?{
回击{
val httpException=e作为?httpException
val errors=JSONObject(httpException?.response()?.errorBody()?.string()).get(“errors”)作为列表
}捕获(忽略:异常){
无效的
}
}
检查这篇文章:
发布与问题相关的实际部分而不是链接更合适。发布与问题相关的实际部分而不是链接更合适。