OkHttp 4.x尝试通过调用请求访问URL时出现错误

时间:2020-02-15 01:34:12

标签: android kotlin okhttp

我最近开始将okhttp3更新到4.x

这样做时,我遇到以下构建时间错误:

Using 'url(): HttpUrl' is an error. moved to val

当我尝试从通过调用获取的请求对象获取url时,就会发生此问题:

例如

   call.enque(callback : Callback){
     override fun onFailure(call : Call, t:Throwable) {
       val url = call.request().url().toString
     }
   }

我进一步抬起头来,Url中的Request对象现在也称为final。

此外,其升级指南https://square.github.io/okhttp/upgrading_to_okhttp_4/中没有说明

对于其他获取网址的建议,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

Using 'url(): HttpUrl' is an error. moved to val

这意味着您应该将函数调用url()更改为属性访问权限url

okhttp 4的弃用注释中带有replaceWith参数,例如Android Studio可以通过右键单击/ alt输入错误来自动提供该修复程序:

@Deprecated(
  message = "moved to val",
  replaceWith = ReplaceWith(expression = "url"),
  level = DeprecationLevel.ERROR)

来自评论:

进一步调查后,我发现request()或Request对象来自Retrofit2。Retrofit2返回了来自okhttp3的调用对象

这是Android Studio的问题。您可以通过将其显式转换为okhttp 4类型来解决此问题,例如(call.request() as Request).url