如何处理 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)
                        }
                    }