Kotlin使用window.fetch API获取二进制数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin使用window.fetch API获取二进制数据相关的知识,希望对你有一定的参考价值。
我的目标是在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
我试了一段时间谷歌搜索。不幸的是,我没有找到任何解决方案。
任何人都可以帮助我应对转换类型问题
提前致谢
答案
如果我理解你的问题是正确的,正确的解决方案可能是从Int8Array
建立ArrayBuffer
并将其投射到像这样的ByteArray
Int8Array(it).unsafeCast<ByteArray>()
以上是关于Kotlin使用window.fetch API获取二进制数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将 window.fetch() 与 httpOnly cookie 或基本身份验证一起使用
@testing-library/与 msw/node 反应; window.fetch 未在 POST 上返回正文
将 Json 字符串解析为 Kotlin 对象会与 Jackson 一起引发 InvalidDefinitionException
Kotlin 协程协程底层实现 ① ( Kotlin 协程分层架构 | 基础设施层 | 业务框架层 | 使用 Kotlin 协程基础设施层标准库 Api 实现协程 )