我如何在Kotlin中使用Retrofit2获得响应url ?



一些背景,我试图做Spotify's授权代码流。现在我被困在请求用户授权上了。问题是响应体在url中作为附加到我提供给Spotify的回调重定向uri的查询参数。因为我正在做的应用程序是一个Android Kotlin应用程序(相关的部分是它是Kotlin)。

因此,我需要以某种方式获得查询参数,并且在Retrofit2中没有找到任何支持。所以我把注意力集中在获取url上,并为查询参数解析url,但我也不知道如何做到这一点。在Stackoverflow上的所有搜索都让我知道了如何获得请求url,但它对我没有任何用处,我想要响应url。所以问题是我如何使用Retrofit2Kotlin中获得响应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

相关内容

  • 没有找到相关文章

最新更新