出现错误 使用“receivedResponseAtMillis(): Long”是一个错误。移至 okhttp 中的 val

问题描述 投票:0回答:1

更新 okhttp 4.12.0 后出现此错误。这是我遇到问题的下面的代码。

fun retrofit2.Response<*>.responseTimeMs(): Long =
    raw().run {
      receivedResponseAtMillis() - sentRequestAtMillis()
}

我也将其移至 val 并尝试如下。但它不起作用。

fun retrofit2.Response<*>.responseTimeMs(): Long {
  val received = raw().receivedResponseAtMillis()
  val sent = raw().sentRequestAtMillis()
  return (received - sent)
}

请让我知道如何解决这个问题。

android kotlin okhttp
1个回答
0
投票

Using 'receivedResponseAtMillis(): Long' is an error. moved to val

此消息表明您必须使用 val 属性

receivedResponseAtMillis
而不是函数调用
receivedResponseAtMillis()
。 这不是像代码片段中那样创建引用
val received = raw().receivedResponseAtMillis()

IDE 通常会显示该错误的快速修复,例如

Replace with 'receivedResponseAtMillis'

这个扩展功能应该可以工作。

fun retrofit2.Response<*>.responseTimeMs(): Long =
    raw().run {
        receivedResponseAtMillis - sentRequestAtMillis
    }

这是

receivedResponseAtMillis()

已弃用的注释
// OkHttp v4.12.0

@JvmName("-deprecated_receivedResponseAtMillis")
  @Deprecated(
      message = "moved to val",
      replaceWith = ReplaceWith(expression = "receivedResponseAtMillis"),
      level = DeprecationLevel.ERROR)
  fun receivedResponseAtMillis(): Long = receivedResponseAtMillis
© www.soinside.com 2019 - 2024. All rights reserved.