कैसे फड़फड़ा में gzip एन्कोडेड डेटा के साथ एक json प्रतिक्रिया को डिक्रिप्ट करना है?

Jan 15 2021

Json प्रतिक्रिया ने उन वस्तुओं को एन्क्रिप्ट किया है जिन्हें वास्तविक प्रक्रिया प्राप्त करने के लिए डिक्रिप्ट करना पड़ता है। Android में GZip का उपयोग किया गया था। मैं इसे कैसे प्राप्त कर सकता हूं नमूना Json के रूप में नीचे उल्लेख किया गया है। किसी भी मदद की वास्तव में सराहना की जाती है।


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

मूल रूप से कैसे एक Gzip स्ट्रिंग को डिक्रिप्ट करने के लिए। एंड्रॉइड में एक ही प्रक्रिया की गई थी, लेकिन एंड्रॉइड जावा कोड के साथ नया फ़्लर्ट करना संलग्न है। मैं स्पंदन में ऐसा कुछ हासिल करना चाहता हूं

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

रास्ते में मैंने कोशिश की थी

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

जो अपवाद छोड़ देते हैं

Unhandled Exception: FormatException: Invalid GZip Signature

जवाब

1 ch271828n Jan 15 2021 at 21:55

डिक्रिप्ट किए गए ज़िप के लिए: फ़्लटर में एक गज़िप Http रिस्पॉन्स को कैसे डीकोड किया जाए?

संपादित करें

इस तरह से डिकम्प्रेस

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