首页 > 解决方案 > 在没有额外库的情况下在 Kotlin 1.1.0 中发出异步网络请求的正确方法

问题描述

我目前正在开发一个[minecraft-forge]模组,目标是他们系统的一个非常旧的版本。

相关资料:

我一直在尝试弄清楚如何使用纯 kotlin正确/惯用地创建异步网络请求,并在完成后更新主线程上的项目。网络请求完成后不应永久挂起主程序。

到目前为止我已经尝试过:

// Player is a custom class of mine that stores data I fetch here
class FetchStatsThread(val uuid: String, val callback: (player: Player) -> Unit): Thread() {
    override fun run() {
        val url = URL("domain")
        val request: URLConnection = url.openConnection()
        request.connect()
        val str = InputStreamReader(request.getContent() as InputStream).buffered().use(BufferedReader::readText)
        // do some stuff here that generates a Player object named playerData
        callback(playerData)
    }
}

...

// Elsewhere, i trigger the request with:
FetchStatsThread(uuid, callback).start()

这是在 kotlin 1.1 或更早版本中发出异步网络请求的正确方法吗?

标签: kotlinminecraft-forge

解决方案


推荐阅读