我正在Android应用中使用Retrofit2。这是我的回复代码:
override fun onResponse(call: Call<Asset>?, response: Response<Asset>?) {
val errorStart = response?.errorBody()?.string() // I get "ERROR" here
if (response != null && response.isSuccessful) {
// A successful response was returned
completion(response.body(), null)
} else {
// Not success
val errorElse = response?.errorBody()?.string() // I get "" here
val error = Error(errorText)
completion(null,error)
}
}
这是我用来测试代码的代码:
response = Response.Builder()
.code(403)
.message(responseString)
.request(chain.request())
.protocol(Protocol.HTTP_1_0)
.body(ResponseBody.create(MediaType.parse("application/json"), "ERROR"))
.addHeader("content-type", "application/json")
.build()
运行代码并返回响应时,response?.errorBody()?.string()
是一个字符串,我可以捕获它,就像在此代码中将其作为val errorStart一样。
...但...
当我运行IF代码/逻辑并尝试在else代码块中捕获response?.errorBody()?.string()
时,它现在为空白/消失。
有人可以解释发生了什么或我做错了什么吗?在OnResponse中捕获错误信息的正确方法是什么?