Android 捕获带有改装HttpException的错误消息

Android 捕获带有改装HttpException的错误消息,android,android-studio,kotlin,retrofit2,Android,Android Studio,Kotlin,Retrofit2,我正在使用reformation向API发出一些请求,当我收到回复时,如果请求成功,通常会以这种格式从API收到响应 成功响应 { "成功":一,, “错误”:[], “数据”:[ //一些数据。。 ] } 如果出现错误,响应将如下所示 响应不成功 { “成功”:0, “错误”:[ “密码不正确” ], “数据”:[] } 现在的问题是,如果请求不成功,则会出现错误代码403,因此改型将其分类为异常并抛出HttpException,那么我无法捕获json响应中附加的密码不正确的消息 即使存在

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

成功响应

{
"成功":一,,
“错误”:[],
“数据”:[
//一些数据。。
]
}
如果出现错误,响应将如下所示

响应不成功

{
“成功”:0,
“错误”:[
“密码不正确”
],
“数据”:[]
}
现在的问题是,如果请求不成功,则会出现
错误代码403
,因此改型将其分类为异常并抛出
HttpException
,那么我无法捕获
json
响应中附加的
密码不正确的消息

即使存在HttpException,是否仍有任何方法可以获得主体响应

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

视图模型

viewModelScope.launch{
试一试{
val result=myApi.request(requestParam)
}catch(e:HttpException){
//记录错误
}
}

嗯,我找到了一种从传递的异常中获取响应的方法

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

旧代码示例

viewModelScope.launch{
试一试{
val result=myApi.request(requestParam)
}catch(e:HttpException){
//记录错误
}
}
但是,我不知道响应主体是通过异常传递的,您可以使用
errorBody()
方法将其作为字符串接收,如下所示

新代码示例

viewModelScope.launch{
试一试{
val result=myApi.request(requestParam)
}catch(e:HttpException){
val response=e.response()?.errorBody()?.string()
}
}
从那里你可以操纵这个字符串来提取错误信息