一些背景,我试图做Spotify's
授权代码流。现在我被困在请求用户授权上了。问题是响应体在url中作为附加到我提供给Spotify的回调重定向uri的查询参数。因为我正在做的应用程序是一个Android Kotlin
应用程序(相关的部分是它是Kotlin)。
因此,我需要以某种方式获得查询参数,并且在Retrofit2
中没有找到任何支持。所以我把注意力集中在获取url上,并为查询参数解析url,但我也不知道如何做到这一点。在Stackoverflow
上的所有搜索都让我知道了如何获得请求url,但它对我没有任何用处,我想要响应url。所以问题是我如何使用Retrofit2
在Kotlin
中获得响应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
如果你有retrofit2.response
,你可以使用raw()
方法抓取okhttp3.Response
。