java.io.IOException: неизвестный формат

Я использую код ниже, чтобы распаковать поступающие данные, которые поступают через socket.io,

При распаковке данных, которые были отправлены как сжатые, приведенный ниже код прекрасно работает. (Псевдоданные, отправляемые с Node.js: <Buffer a8 b2 ...>)

Однако при распаковке данных, которые были отправлены в JSONArray, я получаю java.io.IOException: unknown format ошибка. (Псевдоданные, отправляемые с Node.js: [<Buffer a8 b2 ..>, <Buffer c4 f0 ..>])

mSocket.on("fired", new Emitter.Listener() {
    @Override
    public void call(final Object... args) {
        JSONArray compressedDataArray = (JSONArray) args[0];
        byte[] compressedData = compressedDataArray.getString(0).toString().getBytes();
        String unzipped = new String(decompress(compressedData));
        Log.v("SAMPLE_TAG", "unzipped: " + unzipped) // LOGGING THE RESULT
    }
})


public byte[] decompress(byte[] data) throws IOException {
    ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
    GZIPInputStream gzipIS = new GZIPInputStream(new ByteArrayInputStream(data));

    byte[] buffer = new byte[1024];

    int len;
    while ((len = gzipIS.read(buffer)) > 0) {
      byteArrayOS.write(buffer, 0, len);
    }

    byteArrayOS.close();
    gzipIS.close();

    return byteArrayOS.toByteArray();
  }

Есть ли шанс преодолеть эту проблему?

1 ответ

Решение

Я преодолел эту проблему, изменив строку ниже:

byte[] compressedData = compressedDataArray.getString(0).toString().getBytes();

изменилось как:

byte[] compressedData = (byte[]) compressedDataArray.get(0);

Тогда это работает.

Другие вопросы по тегам