gpt4 book ai didi

android - 使用改进的 HttpException 捕获错误消息

转载 作者:行者123 更新时间:2023-12-05 06:08:02 25 4
gpt4 key购买 nike

我正在使用 Retrofit 向 API 发出一些请求,当我收到响应时,如果请求成功,通常会以这种格式从 API 收到响应

成功响应

{
"success": 1,
"error": [],
"data": [
// Some data..
]
}

如果有错误,响应将是这样的

响应不成功

{
"success": 0,
"error": [
"Password is incorrect"
],
"data": []
}

现在的问题是如果有一个不成功的请求,它带有错误代码403,所以Retrofit将它归类为异常并抛出一个HttpException,然后我有无法捕获 json 响应中附加的 password is incorrect 消息。

即使有 HttpException,有什么方法我仍然可以获得主体响应?

更新

这是我正在使用的示例代码

View 模型

viewModelScope.launch {
try {
val result = myApi.request(requestParam)
}catch (e: HttpException){
// Log the error
}
}

最佳答案

好吧,我想出了一种方法来从传递的异常中取回响应。

正如我在问题中所说,这是我正在使用的代码

旧代码示例

viewModelScope.launch {
try {
val result = myApi.request(requestParam)
}catch (e: HttpException){
// Log the error
}
}

但是,我不知道响应主体是通过异常传递的,您可以使用 errorBody() 方法将其作为字符串接收,如下所示。

新代码示例

viewModelScope.launch {
try {
val result = myApi.request(requestParam)
}catch (e: HttpException){
val response = e.response()?.errorBody()?.string()
}
}

然后您可以从那里操作此字符串以提取错误消息。

关于android - 使用改进的 HttpException 捕获错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65208694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com