gpt4 book ai didi

android - Fuel httpGet() responseString,失败 : com. github.kittinunf.fuel.core.BubbleFuelError: null

转载 作者:太空狗 更新时间:2023-10-29 14:36:08 24 4
gpt4 key购买 nike

问题

我想通过使用 Fuel 作为 Httpclient 对 API 进行同步调用来获得 get 请求的结果。我在 Android (Anko) 项目中使用 Fuel。该调用只是一个简单的获取请求,它总是因以下错误而失败:

Failure: com.github.kittinunf.fuel.core.BubbleFuelError: null

Caused by: com.github.kittinunf.fuel.core.BubbleFuelError: null

背景

我想创建一个函数来返回使用 Fuel 的简单 get 请求的结果。但我无法同步检索结果。

我在互联网上找不到关于这个主题的任何有用信息。

我尝试使用协程等待结果并使用 awaitStringResponse 函数。 --> 没有按预期工作。

刚刚回复了一个涉及该主题的 Github 问题(标记为错误)。 https://github.com/kittinunf/fuel/issues/606

是否有一些解决方法?

代码示例

此代码有效:

requestUrl.httpGet().responseString { _, _, result ->
when (result) {
is Result.Success -> {
// do something on success
}
is Result.Failure -> {
// do something on fail
}
}
}

但是使用这个函数,我无法返回结果。

此代码无效

val (_,_,result)= Fuel.get(requestUrl).responseString()

最佳答案

我找到了一种使用 kotlin 协程解决此问题的方法。

fun doRequest() = runBlocking {
val (_, _, result) = Fuel.get("https://jsonplaceholder.typicode.com/posts/1").awaitStringResponse()
result
}

使用 runBlocking 将阻塞当前线程,直到它完成。

来源:https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/run-blocking.html

当你不想阻塞当前线程时,你可以像这样在一个新线程中启动这个函数:

Thread(
Runnable {
val result = doRequest()
Log.e("Result", result)
}
).start()

如果有人知道处理此问题的更好方法,请展示您的解决方案。

关于android - Fuel httpGet() responseString,失败 : com. github.kittinunf.fuel.core.BubbleFuelError: null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55490293/

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