kotlin - 在没有额外库的情况下在 Kotlin 1.1.0 中发出异步网络请求的正确方法
问题描述
我目前正在开发一个[minecraft-forge]模组,目标是他们系统的一个非常旧的版本。
相关资料:
- Gradle 包装器不能高于 3.0 版本
- Kotlin 不能高于 1.1.0 版本
- 我似乎在 kotlin 上找不到版本化文档
- 我的代码被注入到主程序中;它不是独立运行的。
- 这不在android上运行。
我一直在尝试弄清楚如何使用纯 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 或更早版本中发出异步网络请求的正确方法吗?
解决方案
推荐阅读
- android - 使用 webRTC 为视频通话响铃用户设备
- javascript - 从坐标存储在缓冲区中的Javascript裁剪图像
- javascript - 无法在浏览器中调试 React+Typescript。JS文件未在输出目录中生成
- python - 编译以下opencv python源代码
- python - 我需要以维度方式计算数组的平均值
- javascript - 重叠命令?
- angular - 如何使“NativeScript Collapsing Header Plugin”与 Angular 一起工作
- php - GSM 调制解调器 SMS 发送错误:无法设置 com 端口
- angular - angular7中2个模块的声明错误
- c# - EF Core 2.2 多对多获取相关列表