【问题标题】:Kotlin fetch binary data using window.fetch APIKotlin 使用 window.fetch API 获取二进制数据
【发布时间】:2019-02-10 08:06:09
【问题描述】:

我的目标是在多平台项目的JS实际类中实现Http请求调用。

http请求应该返回一个二进制数据

我的 Response 普通类看起来很简单

class Response(val binaryData: ByteArray) {
    var code: Int = 0
    var message: String? = null
    var headers: Map<String, String>? = null
    var body: ByteArray = binaryData
}

数据应以ByteArray

的形式提供

现在获取逻辑看起来像

actual class Call(var request: Request) {
    actual fun enqueue(responseCallback: Callback) {
        window.fetch(request.url).then(onFulfilled = { response ->
            response.arrayBuffer().then(onFulfilled = {
                responseCallback.onResponse(this, Response(it))
            }, onRejected = { error ->
                responseCallback.onFailure(this, Exception(error.message))
            })

    }
}

response.arrayBuffer()ArrayBuffer 类型,而 Response(it) 中的 it 应该 ArrayByte

我尝试了一段时间的谷歌搜索。不幸的是,我没有找到任何解决方案。

谁能帮我解决转换类型的问题

提前致谢

【问题讨论】:

    标签: javascript kotlin type-conversion


    【解决方案1】:

    如果我理解你的问题是正确的,那么正确的解决方案可能是从 ArrayBuffer 构建 Int8Array 并将其转换为 ByteArray 像这样

    Int8Array(it).unsafeCast<ByteArray>()
    

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2021-10-05
      • 2017-04-08
      相关资源
      最近更新 更多