根据迁移指南,我正在从okhttp 3.14迁移到okhttp4,当替换“ response.body()?” 调用“ 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 “。
答案 0 :(得分:0)
这是一个预期的错误消息,它在分支的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
答案 1 :(得分:0)
解决了,我开始观察哪个版本的okhttp链接每个导入,以及一个接口链接到 okhttp-3.12.0.jar 。该接口属于单独的gradle模块,我发现我忘记在该模块的.gradle文件中添加依赖项'实现“ com.squareup.okhttp3:okhttp:4.2.2” '。 (在那种情况下,类根本不会找到okhttp依赖项,而是以某种方式找到了旧版本并依赖它)