Как правильно декодировать отклик необработанных данных - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь использовать API (документации нет), серверная часть использует ScalaJS и uPickle (MsgPack) и возвращает необработанные двоичные данные для каждой конечной точки API.Мне нужно каким-то образом преобразовать эти необработанные двоичные данные в читаемый JSON.

Вот мой код:

function arrayBufferToString( buffer, encoding, callback ) {
    var blob = new Blob([buffer],{type:'text/plain'});
    var reader = new FileReader();
    reader.onload = function(evt){callback(evt.target.result);};
    reader.readAsText(blob, encoding);
}
fetch("https://example.com/example/fetchStats", {
    "credentials": "include",
    "headers": {
        "accept": "*/*",
        "accept-language": "en-US,en;q=0.9",
        "content-type": "application/octet-stream"
    },
    "body":"\u0000",
    "method":"POST",
    "mode":"cors"
}).then(response => response.arrayBuffer().then(arrayBuffer => {
    if (arrayBuffer) {
        var bytes = new Uint8Array(arrayBuffer);
        var u16 = new Uint16Array(bytes.length)
        for(var i=0;i<bytes.length;i++){
            u16[i] = bytes[i].toString().charCodeAt(0)
        }
        arrayBufferToString(u16, 'UTF-8', console.log.bind(console))

    }
}));

Это возвращает следующую строку: "3011102010301" (с пробелами между числами) IЯ не уверен, как читать эти данные.Как я уже говорил выше, API использует это https://github.com/lihaoyi/upickle вместо JSON.

Кто-нибудь знает, как преобразовать необработанные двоичные данные в удобочитаемый для человека формат?

Примерчто вернул бы HTTP-запрос выше: ╚ ╔t╔ ╗ ╔ ╚ ╔

Я так потерян.

1 Ответ

0 голосов
/ 24 марта 2019

Разве вы не можете использовать response.text() или response.json() вместо response.arrayBuffer()

fetch('https://httpbin.org/get')
  .then(response => response.json())
  .then(console.log);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...