kotlin 从获取响应读取字节数据

b4wnujal  于 2023-01-02  发布在  Kotlin
关注(0)|答案(1)|浏览(205)

我想将一个Android-Kotlin项目转换为React Native,但遇到了一个问题:
Kotlin项目处理从API获取数据的方式如下:

import java.net.URL
import java.nio.ByteBuffer
import java.nio.ByteOrder

fun getData() {

    val bytes = try {
        URL(address).readBytes()
    } catch (e: Exception) {
        return emptySet()
    }

    val arrayBuffer = ByteBuffer
        .wrap(bytes)
        .order(ByteOrder.BIG_ENDIAN)
    }

    return arrayBuffer
}

fun URL.readBytes(settings: HeaderSetter? = null): ByteArray {
    val request = Request.Builder()
        .url(this).let {
            settings?.invoke(it) ?: it
        }.build()

    return client.newCall(request).execute().also { if (it.code() != 200) throw IOException("CODE ${it.code()}") }.body()?.use { it.bytes() } ?: throw IOException()
}

var clientHolder: OkHttpClient? = null
val client: OkHttpClient
    get() = clientHolder ?: clientBuilder.build().also {
        clientHolder = it
    }

我在反动派里是怎么做的?

xmd2e60i

xmd2e60i1#

对于来自搜索引擎并希望获得标题中所写问题的答案的用户,从获取响应读取字节的方法是使用Response.arrayBufferResponse.blob
更多信息请访问:https://developer.mozilla.org/en-US/docs/Web/API/Response
使用数组缓冲区的一些提示:

  • 要访问单个字节,请使用Uint8Array-即new Uint8Array(array)
  • 要将字节视为(也称为原始hexdump),请使用TextDecoder(即new TextDecoder("iso-8859-1"))将其解码为iso-8859 - 1
  • 若要将字节转换为普通字符串,也可以使用TextDecoder。

相关问题