我使用Retrofit
向API发出一些请求,当我收到响应时,如果请求成功,通常会从API收到这种格式的响应
- 成功响应**
{
"success": 1,
"error": [],
"data": [
// Some data..
]
}
如果出现错误,响应将如下所示
- 响应不成功**
{
"success": 0,
"error": [
"Password is incorrect"
],
"data": []
}
现在的问题是,如果有一个不成功的请求,它与error code 403
一起出现,所以Retrofit将其归类为异常并抛出HttpException
,然后我无法捕获json
响应中附加的password is incorrect
消息。
有没有什么办法,即使有一个HttpException,我仍然可以得到身体的React?
更新
这是我使用的示例代码
- 视图模型**
viewModelScope.launch {
try {
val result = myApi.request(requestParam)
}catch (e: HttpException){
// Log the error
}
}
2条答案
按热度按时间qvtsj1bj1#
我找到了一个从传递的异常中取回响应的方法。
正如我在问题中所说,这是我正在使用的代码
旧代码示例
但是,我不知道响应主体是通过异常传递的,您可以使用
errorBody()
方法将其作为字符串接收,如下所示。新代码示例
从那里你可以操作这个字符串来提取错误信息。
6qftjkof2#
您可以像这样添加扩展方法:
然后,您可以获得如下所示的异常信息: