我在nodejs服务器上使用pako软件包,并将压缩的二进制字符串从服务器发送到flutter客户端。我无法在Flutter客户端上对其进行解压缩/充气。我尝试过图书馆的组合
我的服务器NodeJS代码:
var pako = require('pako');
let buffer = pako.deflate(JSON.stringify(userModels), { to: 'string' });
//Server code for sending to client
我的Flutter代码:
import 'dart:io';
import 'dart:convert';
List<int> gzipBytes = serverResponse.data.codeUnits;
List<int> stringBytes = gzip.decode(gzipBytes);
var data = utf8.decode(stringBytes);
我遇到以下异常。
在1,725毫秒内重新启动应用程序。 E /颤振(25340): [错误:flutter / lib / ui / ui_dart_state.cc(148)]未处理的异常: InternalError:“过滤器错误,数据错误” E / flutter(25340):#0
_FilterImpl.processed(dart:io-patch / filter_patch.dart:11:32)E / flutter(25340):#1 _FilterSink.addSlice (dart:io / data_transformer.dart:610:29)E / flutter(25340):#2
_FilterSink.add(dart:io / data_transformer.dart:596:5)E / flutter(25340):#3 ZLibDecoder.convert (dart:io / data_transformer.dart:465:9)E / flutter(25340):#4
编解码器(dart:convert / codec.dart:26:34)
答案 0 :(得分:0)
您没有显示如何接收数据,但没有通过字符串。例如,如果使用package:http
,请使用:
var bytes = response.bodyBytes;
下一步,看起来您不应该使用gzip
,而是zlib
;
var inflated = zlib.decode(bytes);
var data = utf8.decode(inflated);
json.decode(data);