android - 如何异步调用HTTP Post API?

标签 android http kotlin kohttp

我的 Android 应用程序有问题。我对它还很陌生,在查找异步的正确文档时遇到了一些问题。我正在使用 kohttp 库来帮助我。

问题是,你不能在主 UI 线程上运行它,所以我想使这个请求异步。我在文档中找不到明确的引用,而且我真的不知道如何在普通 Kotlin 中执行此操作。

这是我想出的;在名为 LoginCall 的单独类中。我尝试了其他答案,但这并没有成功。我怎样才能在新线程上运行它并仍然使用响应?

    class LoginCall {
    fun callLoginRequest(a:String, b:String): Any {

        val response: Response = httpPost {
            host = "XXX"
            path = "XXX"

            param { }
            header { }

            body {
                form {
                    "email" to a
                    "password" to b
                }
            }
        }

        return response
    }
}

最佳答案

有很多方法可以实现这一点,如果您使用 android 作为底层平台,您可以使用名为 AsyncTask 的 native 组件一个很好的 SO post关于如何使用它。

如果您希望将 kotlin 用作一种语言及其提供的功能,您可以尝试使用 coroutines ref .

就我个人而言,我会推荐coroutines,它简化了异常和错误处理,还可以防止回调 hell 。

这是协程中相同代码的示例,

// global 
private val mainScope = CoroutineScope(Dispatchers.MAIN + SupervisorJob())

// inside a method 
mainScope.launch{
  withContext(Dispatchers.IO){
    // do your async task here, as you can see, you're doing this in an IO thread scope. 
  }
}

关于android - 如何异步调用HTTP Post API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212866/

相关文章:

php - 对非对象上的成员函数 bind_param() 的 fatal error 调用

android - ButterKnife 8.0.1 不工作

Android - 如何在 Robospice/retrofit 中获取 JSON 格式的请求和响应

http - 如何创建一个不由轮询驱动的聊天服务器?

http - Firebug 不显示 302 响应

android - Anko布局DSL : How to use already existing layout?

Kotlin 的 Iterable 和 Sequence 看起来完全一样。为什么需要两种类型?

android:inputType ="textAutoComplete"不起作用

php - 模拟原始 POST 数据

kotlin - 如何在构造函数的try-catch中处理多个值