如何处理 Kotlin 中的 500 错误并使用 Retrofit2 显示详细消息?
How to handle 500 error in Kotlin and show detail message using Retrofit2?
我使用下一个参考资料来实现对 kotlin 解决方案的改造
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.0.1'
implementation 'com.squareup.okhttp3:okhttp:4.0.1'
我实现了一个api它return这个结果:
Postman测试没问题
通过基本的回调改造,我拦截了结果代码 + 消息 http
if (response.code() == 500) {
val gson = GsonBuilder()
.setLenient()
.create()
var locerr = gson.fromJson(response?.errorBody()?.string(),
err::class.java)
Log.e("MainActivity", "${locerr.code} => ${locerr.message}")
但我没有看到“结果”这个值不在 errorbody 或 body 中,因为它不是成功的案例 (200)
如何获取结果或处理错误“结果”?
试试这个-->
if (res.body()?.status==200) {
.
.
}
else
{
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
applicationContext,
jObjError.getString("yout_message_key"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr",e.message)
}
}
我使用下一个参考资料来实现对 kotlin 解决方案的改造
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.0.1'
implementation 'com.squareup.okhttp3:okhttp:4.0.1'
我实现了一个api它return这个结果:
Postman测试没问题
通过基本的回调改造,我拦截了结果代码 + 消息 http
if (response.code() == 500) {
val gson = GsonBuilder()
.setLenient()
.create()
var locerr = gson.fromJson(response?.errorBody()?.string(),
err::class.java)
Log.e("MainActivity", "${locerr.code} => ${locerr.message}")
但我没有看到“结果”这个值不在 errorbody 或 body 中,因为它不是成功的案例 (200)
如何获取结果或处理错误“结果”?
试试这个-->
if (res.body()?.status==200) {
.
.
}
else
{
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
applicationContext,
jObjError.getString("yout_message_key"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
Log.e("errorrr",e.message)
}
}