根据迁移指南,当我替换“response.body()?”时,我正在从okhttp 3.14迁移到okhttp4。 调用“response.body?” IDE在代码的最后一行显示错误“无法访问'body':它在'Response'中是程序包专用的”

val request = Request.Builder().url(url).build()
        val response = coreNetwork.getOkHttp().newCall(request).execute()
        val stream = response.body?.source()?.inputStream()

如果我正在尝试“response.body()?” 调用显示错误“使用'body():ResponseBody?'是一个错误。按预期移至val“。

最佳答案

这是一个预期的错误消息,它在分支的4.2.x版本中查看Response.kt的代码:

@JvmName("-deprecated_body")
@Deprecated(
    message = "moved to val",
    replaceWith = ReplaceWith(expression = "body"),
    level = DeprecationLevel.ERROR)
fun body(): ResponseBody? = body

所以解决方案是调用看起来像您已经在做的response.body? ...

有关详细信息,请参见:https://github.com/square/okhttp/blob/okhttp_4.2.x/okhttp/src/main/java/okhttp3/Response.kt#L202

09-10 07:20
查看更多