flutter / dart:如何在flutter中解压缩/膨胀zlib二进制字符串

问题描述 投票:0回答:1

我在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 /颤振(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):#4Codec.decode(dart:convert / codec.dart:26:34)

flutter dart binary zlib pako
1个回答
0
投票

您没有显示如何接收数据,但不要通过字符串访问。例如,如果使用package:http,请使用:

var bytes = response.bodyBytes;

下一步,看起来您不应该使用gzip,而是zlib;

var inflated = zlib.decode(bytes);
var data = utf8.decode(inflated);
json.decode(data);
© www.soinside.com 2019 - 2024. All rights reserved.