我最近开始将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/中没有说明
对于其他获取网址的建议,我将不胜感激。
答案 0 :(得分:3)
Using 'url(): HttpUrl' is an error. moved to val
这意味着您应该将函数调用url()
更改为属性访问权限url
。
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
。