Okhttp4,无法访问 'body':它在 'Response' 中是包私有的
Okhttp4, Cannot access 'body': it is package-private in 'Response'
我正在从 okhttp 3.14 迁移到 okhttp4,根据迁移指南,当替换 "response.body()?" 对 "response.body?"[ 的调用时=22=] 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了解详情
已解决,我开始关注每次导入链接的 okhttp 版本,以及一个链接到 okhttp-3.12.0.jar 的接口。此接口属于单独的 gradle 模块,我发现我忘记添加依赖项 ' 实现 "com.squareup.okhttp3:okhttp:4.2.2" ' 到该模块的 .gradle 文件. (在那种情况下 class 根本不应该找到 okhttp 依赖项,但不知何故找到了旧版本并依赖于它)
我正在从 okhttp 3.14 迁移到 okhttp4,根据迁移指南,当替换 "response.body()?" 对 "response.body?"[ 的调用时=22=] 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了解详情
已解决,我开始关注每次导入链接的 okhttp 版本,以及一个链接到 okhttp-3.12.0.jar 的接口。此接口属于单独的 gradle 模块,我发现我忘记添加依赖项 ' 实现 "com.squareup.okhttp3:okhttp:4.2.2" ' 到该模块的 .gradle 文件. (在那种情况下 class 根本不应该找到 okhttp 依赖项,但不知何故找到了旧版本并依赖于它)