【问题标题】:How to handle 500 error in Kotlin and show detail message using Retrofit2?如何处理 Kotlin 中的 500 错误并使用 Retrofit2 显示详细消息?
【发布时间】:2020-09-07 19:12:38
【问题描述】:

我使用下一个引用来实现对 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 它返回这个结果:

邮递员测试没问题。

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

如何获得结果或处理错误“结果”?

【问题讨论】:

    标签: android kotlin retrofit retrofit2


    【解决方案1】:

    试试这个-->

                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)
                            }
                        }
    

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 2017-03-14
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多