Bagaimana cara mendekripsi respons json dengan data yang dikodekan gzip di flutter?

Jan 15 2021

Respons Json telah mengenkripsi objek yang harus didekripsi untuk mendapatkan proses yang sebenarnya. Di Android GZip digunakan. Bagaimana saya bisa mencapai ini Sampel Json adalah seperti yang disebutkan di bawah ini. Bantuan apa pun sangat dihargai.


            {
                "Data": "1.´ABCD´1150275,11028´01-Jan-2021´8,000.00´",
                "Data": [
                    {
                      "Element": "8iMAAB+LCAAAAAAABADt1T8zBxwHgkefKcGh98Zcdz8FSqj9DMzK4d+L0Nj1tveNR2w6M8rRs3PJWBFDy"
                    },
                    {
                     "Element": "B1AV4bGp6JzQJI8ChnxzixrlT8vKnYHPwRM8zykKVn2gkceAFdxMwU0to"
                    }
                ],

    "Status": 1,
    "Msg": "Success",
    "APIVersion": "1.4"
}

Pada dasarnya cara mendekripsi string Gzip. Proses yang sama dilakukan di android, tetapi kode java Android baru yang bergetar terpasang. saya ingin mencapai sesuatu seperti itu dalam flutter

    public static String decompress(String zipText) throws IOException {
        byte[] compressed = Base64.decode(zipText, Base64.DEFAULT);
        if (compressed.length > 4) {
            GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(compressed, 4,compressed.length - 4));
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            for (int value = 0; value != -1; ) {
                value = gzipInputStream.read();
                if (value != -1) {
                    baos.write(value);
                }
            }
            gzipInputStream.close();
            baos.close();
            return new String(baos.toByteArray(), StandardCharsets.UTF_8);
        } else {
            return "";
        }
    }

Di jalan saya mencoba itu

  List<int> data  = utf8.encode(zipText);
  var deCompressedString = GZipDecoder().decodeBytes(data);
  print(deCompressedString);

Yang mana pengecualian lemparan

Unhandled Exception: FormatException: Invalid GZip Signature

Jawaban

1 ch271828n Jan 15 2021 at 21:55

Untuk dekripsi di-zip: Bagaimana cara memecahkan kode Respons Http Gzip di Flutter?

EDIT

dekompresi seperti ini

 String decompress(String zipText) {
  final List<int> compressed = base64Decode(zipText);
  if (compressed.length > 4) {
   Uint8List uint8list = GZipDecoder().decodeBytes(compressed.sublist(4, compressed.length - 4));
   // print( String.fromCharCodes(uint8list));
   return String.fromCharCodes(uint8list);
  } else {
   return "";
  }
 }