android - 无法解决 "Content-Length and stream length disagree"错误

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

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

最佳答案

我找到了问题的答案。问题是我试图两次解析 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/

相关文章:

android - 如何在不压缩的情况下压缩文件

android - 在 fragment 中点击OptionsMenu项时不需要的导航

android - 在 fragment 中的自定义构建对话框中使用 Android GraphView

android - 无法从包裹崩溃报告中读取输入 channel 文件描述符

android - 获取应用程序图标 android 8 时出现异常,适用于 android 7

java - 如何在Android中滚动项目时添加圆角作为Recyclerview的背景

gradle - Kotlin 总是告诉我 KotlinReflectionNotSupportedError

android - 如何将数据类解析为 Kotlin 的 JSON 字符串?

android - FirebaseRecyclerAdapter、PopulateViewHolder 滚动时多次调用

android - 如何处理 android 中位置自动完成 fragment 的可见性