¿Cómo descifrar una respuesta json con datos codificados en gzip en flutter?
La respuesta de Json tiene objetos cifrados que deben descifrarse para obtener el proceso real. En Android se usó GZip. ¿Cómo puedo lograr esto? El ejemplo de Json es como se menciona a continuación. Se agradece mucho cualquier ayuda.
{
"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"
}
Básicamente, cómo descifrar una cadena Gzip. El mismo proceso se realizó en Android, pero soy nuevo en el código java de Android que se adjunta. quiero lograr algo así en aleteo
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 "";
}
}
En la forma en que lo intenté fue
List<int> data = utf8.encode(zipText);
var deCompressedString = GZipDecoder().decodeBytes(data);
print(deCompressedString);
Que lanza la excepción
Unhandled Exception: FormatException: Invalid GZip Signature
Respuestas
1 ch271828n
Para descifrar zip: ¿Cómo decodificar una respuesta Http Gzip en Flutter?
EDITAR
descomprimir así
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 "";
}
}