我无法得到400响应在错误体的改造。我已经设置了日志记录水平,它显示在日志中,但不显示在错误体我已经搜索了很多,但没有找到任何解决方案是任何人有谁帮助我在这种情况下摆脱这个问题
call_.enqueue(object : Callback<ResponseBody> {
override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {
if (response?.code() == 400) {
var jObjError: JSONObject? = null
try {
var jObjErrorr = response.errorBody().string()
CustomLogs.displayLogs("$TAG jObjErrorr: $jObjErrorr")
} catch (e: Exception) {
}
try {
val string = jObjError?.getstring("error_description")
CustomLogs.displayLogs("$TAG jObjError: $string")
} catch (e: Exception) {
e.printStackTrace();
}
}
}
我需要错误体来获取和显示消息,我的日志显示此信息
{"error":"Authorize","error_description":"Error in authentication"}
但错误正文未显示此对象
4条答案
按热度按时间bt1cpqcv1#
正如IntelliJ Amiya在评论中提到你应该在
onFailure
方法中这样做。据我所知,在响应代码不在200范围内(200,201,202等)的情况下,不会调用Retrofit的onResponse
,所以你对if (response?.code() == 400)
的检查将永远不会返回true。kxeu7u2r2#
如果您浏览Retrofit onResponse Library...,其中明确提到Retrofit不会为状态代码低于200或高于300的响应创建正文。您必须具体指定错误响应!!
ycl3bljg3#
决定将其作为单独答复添加:
你能试试这个碎片吗?
eivgtgni4#
你可以在Kotlin这样做: