Kotlin Fuel 阻塞模式 GET http 请求总是失败

问题描述

到目前为止,我一直在使用 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。 有人可以帮忙吗?

非常感谢您抽出宝贵时间。

解决方法

我还没有完全理解,但我已经开始工作了。这就是我所做的。

  1. 在我的应用 build.gradle 中添加了实现“com.github.kittinunf.fuel:fuel-coroutines:2.2.1”
  2. 将 .responseString() 更改为 .awaitStringResponse()
  3. 用 runBlocking{ }
  4. 包围代码

所以试试这个:

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
        }
    }
}