我在尝试执行以下代码时遇到错误:
fun parseErrorCodes(response: Response<*>): List<String> {
val errorCodes: MutableList<String> = ArrayList()
try {
val listType = object : TypeToken<ArrayList<ApiError>>() {
}.type
val errorJson = JsonParser().parse(response.errorBody().string()).asJsonObject.get("response")
if (errorJson.isJsonArray) {
val errors = Gson().fromJson<List<ApiError>>(errorJson, listType)
for (apiError in errors) {
errorCodes.add(apiError.errorCode)
}
return errorCodes
} else {
errorCodes.add(Gson().fromJson(errorJson, ApiError::class.java).errorCode)
return errorCodes
}
} catch (e: Exception) {
e.printStackTrace()
}
return errorCodes
}
错误发生在以下行: val errorJson = JsonParser().parse(response.errorBody().string()).asJsonObject.get("response")
有人可以帮我解决这个错误吗?
最佳答案
我找到了问题的答案。问题是我试图两次解析 API 的响应,第一次显示错误消息,然后获取错误代码来处理它们以供将来验证。
这就是我的代码的样子:
ErrorHandler.showError(activity, response)
val errorCodes = ErrorHandler.parseErrorCodes(response)
handleErrorCodes(errorCodes)
因此,showError 和 parseErrorCodes 两种方法都可以处理 API 响应。
关于android - 无法解决 "Content-Length and stream length disagree"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244071/