如何使用Retrofit2处理Kotlin中的500错误并显示详细消息?

问题描述

我将使用以下参考资料对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,它返回以下结果:

enter image description here

邮递员测试还可以。

通过基本的回调改造,我拦截了结果代码+消息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}")

但是我看不到“结果”,该值不在错误的正文或正文中,因为它不是成功的案例(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)
                        }
                    }