gpt4 book ai didi

android - 如何将 Fuel 与 Kotlin 协程一起使用

转载 作者:搜寻专家 更新时间:2023-11-01 09:26:14 47 4
gpt4 key购买 nike

在 Android 应用程序中,我尝试使用 Fuel在 Kotlin 协程中发出 HTTP 请求。我的第一个尝试是在这样的包装器中使用同步模式:

launch(UI) {
val token = getToken()
println(token)
}

suspend fun getToken(): String? {
var (request, response, result = TOKEN_URL.httpGet().responseString()
return result.get()
}

但这会返回一个 android.os.NetworkOnMainThreadException。 Fuel 文档提到了 .await() 和 .awaitString() 扩展,但我还没弄明白。

从 Android 应用程序的主 UI 线程在 Kotlin 协程中发出 Fuel http 请求的最佳方法是什么?坚持这一点 - 非常感谢...

最佳答案

suspend fun 调用阻塞代码不会自动将其转换为暂停代码。您调用的函数本身必须已经是一个 suspend fun。但是,正如您已经指出的那样,Fuel 对 Kotlin 协同程序提供一流的支持,因此您不必自己编写。

我研究过 Fuel 的 test code :

Fuel.get("/uuid").awaitStringResponse().third
.fold({ data ->
assertTrue(data.isNotEmpty())
assertTrue(data.contains("uuid"))
}, { error ->
fail("This test should pass but got an error: ${error.message}")
})

这应该足以让您继续前进。例如,您可以编写一个简单的函数,如下所示:

suspend fun getToken() = TOKEN_URL.httpGet().awaitStringResponse().third

关于android - 如何将 Fuel 与 Kotlin 协程一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402433/

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