我在 Nodejs 服务器上使用 pako 包,并将压缩的二进制字符串从服务器发送到我的 flutter 客户端。我无法在颤动客户端上对其进行解压/充气。我尝试过库的组合
我的服务器 NodeJS 代码:
var pako = require('pako');
let buffer = pako.deflate(JSON.stringify(userModels), { to: 'string' });
//Server code for sending to client
我的颤振代码:
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:转换/编解码器.dart:26:34)
您不显示如何接收数据,但不通过字符串。例如,如果使用package:http
, use:
var bytes = response.bodyBytes;
接下来,您似乎不应该使用gzip
, 反而zlib
;
var inflated = zlib.decode(bytes);
var data = utf8.decode(inflated);
json.decode(data);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)