Kotlin使用window.fetch API提取二进制数据

时间:2019-02-10 08:06:09

标签: javascript kotlin type-conversion

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

http请求应返回二进制数据

我的响应普通班看起来很简单

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 < / p>

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

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

预先感谢

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题正确,则可以从Int8Array构建ArrayBuffer并像这样将其投射到ByteArray

Int8Array(it).unsafeCast<ByteArray>()