gpt4 book ai didi

android - 如何使用 Authenticator 和挂起 api 功能?改造

转载 作者:行者123 更新时间:2023-12-04 14:08:58 25 4
gpt4 key购买 nike

我正在建立客户:

OkHttpClient().newBuilder()
.authenticator(object : Authenticator {
override fun authenticate(route: Route?, response: Response): Request? {
val request = AppPreferences.refreshToken?.let {
api.refreshTokenC(it).execute()
}

...
})
为此,我使用通常的 fun 返回 Call :
@POST("Accounts/refresh")
fun refreshTokenC(@Query("refreshToken") refreshToken: String): Call<TokenResponse>
但是如何将它与挂起功能一起使用?:
    @POST("Accounts/refresh")
suspend fun refreshToken(@Query("refreshToken") refreshToken: String): Response<TokenResponse>

最佳答案

  • fun authenticate(route: Route?, response: Response)不是挂起函数,我们不能从中调用挂起函数。
  • 可以使用runBlocking :

  • Runs a new coroutine and blocks the current thread interruptibly until its completion. This function should not be used from a coroutine. It is designed to bridge regular blocking code to libraries that are written in suspending style, to be used in main functions and in tests.


  • fun authenticate(route: Route?, response: Response)在后台线程上被调用,我们可以使用 runBlocking安全。

  • val request = AppPreferences.refreshToken?.let { token ->
    runBlocking { api.refreshToken(token) }
    }
    类似代码: AuthInterceptor.kt

    关于android - 如何使用 Authenticator 和挂起 api 功能?改造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66039313/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com