如何修复:"Unresolved reference: buffer" 或 "Using 'buffer(Source): BufferedSource' is an error. moved to extension function"?

How to fix: "Unresolved reference: buffer" or "Using 'buffer(Source): BufferedSource' is an error. moved to extension function"?

我有 3 行代码从 OkHttp3 源获取正文:

val responseBody = response.peekBody(response.body()!!.contentLength())
val source = GzipSource(responseBody.source())
val body = Okio.buffer(source).readUtf8() //issue is that line

在另一台计算机上出现错误:"Using 'buffer(Source): BufferedSource' is an error. moved to extension function"

所以通过将最后一行替换为以下内容来修复它:

val body = source.buffer().readUtf8()

bun 现在在第一台电脑上出现错误:"Unresolved reference: buffer" 所以我需要恢复那个更改。

怎么了?根据我无法弄清楚的错误消息。这似乎是 gradle 配置的问题。但是什么?如何在两台电脑上编译代码

将实现 "com.squareup.okio:okio:2.3.0" 添加到您的 build.gradle

我搞不清楚,所以我将描述我对 "fix it" 所做的事情。

他们更改了 Okio 以使用 kotlin 扩展,在此 URL 您可以找到包含所有更改的更改日志。 https://square.github.io/okio/changelog/#version-200-rc1

就我而言,我试图通过单元测试。

旧方法是:

val inputStream = javaClass.classLoader.getResourceAsStream("api-response/$fileName")
val source = Okio.buffer(Okio.source(inputStream))

新方法是:

val inputStream = javaClass.classLoader!!
.getResourceAsStream("api-response/$fileName")
.source()
.buffer()