我想通过使用Fuel作为Httpclient对API进行同步调用来获取get请求的结果。 我在Android(Anko)项目中使用Fuel。 调用只是一个简单的get请求,始终会因以下错误而失败:
失败:com.github.kittinunf.fuel.core.BubbleFuelError:空
原因:com.github.kittinunf.fuel.core.BubbleFuelError:空
我想创建一个函数,以使用Fuel返回简单的get请求的结果。但是我无法同步检索结果。
我在互联网上找不到有关此主题的任何有用信息。
我尝试使用协程等待结果,并使用awaitStringResponse函数。 ->未能按预期工作。
仅回答了涉及该主题的Github问题(标记为bug)。 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()
答案 0 :(得分:0)
我找到了一种用Kotlin协程解决此问题的方法。
fun doRequest() = runBlocking {
val (_, _, result) = Fuel.get("https://jsonplaceholder.typicode.com/posts/1").awaitStringResponse()
result
}
使用runBlocking将阻塞当前线程,直到完成为止。
当您不想阻塞当前线程时,可以在这样的新线程中启动此功能:
Thread(
Runnable {
val result = doRequest()
Log.e("Result", result)
}
).start()
如果有人知道更好的处理方法,请显示您的解决方案。