Flutter'da gzip kodlu verilerle bir json yanıtının şifresini nasıl çözebilirim?

Jan 15 2021

Json yanıtı, gerçek süreci elde etmek için şifresi çözülmesi gereken şifrelenmiş nesnelere sahiptir. Android'de GZip kullanıldı. Bunu nasıl başarabilirim Örnek Json aşağıda belirtildiği gibidir.Herhangi bir yardım gerçekten takdir edilmektedir.


            {
                "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"
}

Temel olarak bir Gzip dizesinin şifresinin nasıl çözüleceği. Aynı işlem android'de yapıldı, ancak yeni bir Android java kodu eklendi. flutter'da böyle bir şey başarmak istiyorum

    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 "";
        }
    }

Yolda denedim

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

Hangi atış istisnası

Unhandled Exception: FormatException: Invalid GZip Signature

Yanıtlar

1 ch271828n Jan 15 2021 at 21:55

Sıkıştırılmış şifresini çözmek için: Flutter'da bir Gzip Http Yanıtı nasıl çözülür?

DÜZENLE

böyle sıkıştırın

 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 "";
  }
 }