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

问题描述 投票:0回答:1

我的目标是在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)中应该是ArrayByte

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

任何人都可以帮助我应对转换类型问题

提前致谢

javascript kotlin type-conversion
1个回答
1
投票

如果我理解你的问题是正确的,正确的解决方案可能是从Int8Array建立ArrayBuffer并将其投射到像这样的ByteArray

Int8Array(it).unsafeCast<ByteArray>()
© www.soinside.com 2019 - 2024. All rights reserved.