问题描述
到目前为止,我一直在使用 Fuel 的异步 GET http 请求,一切正常。
我现在需要以阻塞模式发送请求,因为在应用程序继续之前我需要结果 运行。
这是一个非常简单的用于测试目的的阻塞模式下的 GET http 请求:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onStart() {
super.onStart()
val (_,_,result) = "https://httpbin.org/get"
.httpGet()
.responseString()
when (result) {
is Result.Failure -> {
val ex = result.getException()
Log.e("FUEL",ex.toString())
}
is Result.Success -> {
val data = result.get()
tvTest.text = data
}
}
}
}
我总是在 LogCat 中收到错误消息,这意味着我总是收到 Result.Failure
。
有人可以帮忙吗?
非常感谢您抽出宝贵时间。
解决方法
我还没有完全理解,但我已经开始工作了。这就是我所做的。
- 在我的应用 build.gradle 中添加了实现“com.github.kittinunf.fuel:fuel-coroutines:2.2.1”
- 将 .responseString() 更改为 .awaitStringResponse()
- 用 runBlocking{ } 包围代码
所以试试这个:
runBlocking {
val (_,_,result) = "https://httpbin.org/get"
.httpGet()
.awaitStringResponse()
when (result) {
is Result.Failure -> {
val ex = result.getException()
Log.e("FUEL",ex.toString())
}
is Result.Success -> {
val data = result.get()
tvTest.text = data
}
}
}