kotlin Android -尝试访问OkHttp 4.x中的方法时出错

6uxekuva  于 2023-08-06  发布在  Kotlin
关注(0)|答案(2)|浏览(180)

当我试着做这个有趣的事情时,我得到了这个错误->

private fun getUrl(response: Response\<\*\>): String {
val networkResponse = response.raw().networkResponse()
return networkResponse?.request()?.url()?.toString() ?: response.raw().request().url()
.toString()
}

字符串
错误->

Using 'networkResponse(): Response?' is an error. moved to val
Using 'request(): Request' is an error. moved to val
Using 'url(): HttpUrl' is an error. moved to val
Using 'request(): Request' is an error. moved to val
Using 'url(): HttpUrl' is an error. moved to val


有人能帮帮我吗?PLS
我尝试了一些我在网上找到的东西,但没有任何帮助

izkcnapc

izkcnapc1#

使用'networkResponse():“回答?”是错误。移动到瓦尔
使用'request():请求'是一个错误。移动到瓦尔
使用'url():HttpUrl'是一个错误。移动到瓦尔
使用'request():请求'是一个错误。移动到瓦尔
使用'url():HttpUrl'是一个错误。移动到瓦尔
这意味着你不应该把它们作为函数调用,而是作为属性/字段访问。例如,使用不带括号的request代替request()
你似乎还混合了导入,Response在okhttp和Retrofit库中都存在,请确保导入正确的库。我猜这就是你想要的:

private fun getUrl(response: retrofit2.Response<String>): String {
    val networkResponse:okhttp3.Response? = response.raw().networkResponse()
    return networkResponse?.request?.url?.toString() ?: response.raw().request().url().toString()
}

字符串

osh3o9ms

osh3o9ms2#

这有点愚蠢,但你必须将response.raw()转换为okhttp3.Response

val networkResponse = (response.raw() as okhttp3.Response).networkResponse

字符串
然后,您应该会获得IDE错误,并自动修复建议对这些方法引用使用瓦尔值。

相关问题