一些背景,我正在尝试做
Spotify's
授权代码流程。现在我一直在请求用户授权。问题是响应主体在 url 中,作为附加到我提供给 Spotify 的回调重定向 uri 的查询参数。因为我正在做的应用程序是一个Android Kotlin
应用程序(相关部分是它是Kotlin)。
因此我需要以某种方式获取查询参数,但在
Retrofit2
中没有找到任何支持。所以我把注意力集中在获取 url 和解析查询参数的 url 上,但我也不知道该怎么做。 Stackoverflow
上的所有搜索让我了解了如何获取请求 url,但这对我没有任何用处,我想要响应 url。所以问题是我如何使用Kotlin
实际获得Retrofit2
中的响应url?或者,如果我能以某种方式直接获取查询参数,那会更好。
最好答案不包含
Call<>
和 .enqueue()
,因为在 Kotlin 中您不能同时使用挂起函数和 Call<>
并且最好使用挂起。另外,作为个人喜好,我正在使用 Retrofit2
而不是使用 Spotify SDK
,我认为这应该是可能的。
你应该仔细看看文档。 您可以从
okhttp3.Response
网络获得的Retrofit2
具有属性request
。
OkHttp3
像下面这样解释这个属性。
发起此 HTTP 响应的线路级请求。这不一定是应用程序发出的相同请求: 它可能被 HTTP 客户端转换。例如,客户端可能会从请求正文中复制诸如 Content-Length 之类的标头。 它可能是响应 HTTP 重定向或身份验证质询而生成的请求。在这种情况下,请求 URL 可能与初始请求 URL 不同。
这意味着您可以像这样从
okhttp3.Response
获得响应查询。
response.request.url.query