无法解决"内容长度和流长度不一致"错误

时间:2016-12-20 13:58:04

标签: android kotlin

尝试执行以下代码时出错:

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

有人可以帮我解决这个错误吗?

1 个答案:

答案 0 :(得分:3)

我找到了问题的答案。问题是我试图解析API的响应两次,第一次显示错误消息然后获取错误代码来处理它们以供将来验证。

这是我的代码的外观:

ErrorHandler.showError(activity, response)
val errorCodes = ErrorHandler.parseErrorCodes(response)
handleErrorCodes(errorCodes)

因此,两个方法showError和parseErrorCodes都在使用API​​响应。