在 Flex 和 Java 中实现 zLib 压缩

发布于 2024-09-05 08:19:43 字数 971 浏览 10 评论 0原文

我正在将一些 JSON 数据从 Flex 应用程序发送到 Java 端进行业务处理。现在最重要的是,我添加了一些代码来压缩(zLib)Flex端的数据,然后通过Request传递它并在java端解压缩相同的数据。 但在java层,未压缩的数据仍然不是可读/可用的格式。

把代码放在这里供参考。

用于编码的 Flex 代码

var bytes:ByteArray = new ByteArray();
bytes.writeObject(JSON.encode(someObj));
bytes.position = 0;
bytes.compress();
variables.encodeJSONStr = bytes;
requester.data = variables;
loader.load(requester);

用于解码的 Java 代码

String json = req.getParameter("encodeJSONStr");
byte[] input = json.getBytes();
Inflater decompresser = new Inflater();
decompresser.setInput(input);
byte[] result = new byte[1000];
int resultLength=0;
resultLength = decompresser.inflate(result);
decompresser.end();
String outputString = new String(result, 0, resultLength, "UTF-8");
System.out.println("\n\n resultLength>>>"+resultLength); // O/P comes as Zero

有人可以指出将问题放在这里或从 Flex 发送到 Java 时压缩数据的更好方法吗?

I am sending some JSON data from my Flex application to the Java side for business processing. Now on top of that, I have added some code to compress(zLib) the data at Flex side and then pass it through Request and uncompress the same at java side.
But at the java layer, the uncompressed data is still not in readable/usable format.

Putting the code in here for reference.

Flex code for encoding

var bytes:ByteArray = new ByteArray();
bytes.writeObject(JSON.encode(someObj));
bytes.position = 0;
bytes.compress();
variables.encodeJSONStr = bytes;
requester.data = variables;
loader.load(requester);

Java code for decoding

String json = req.getParameter("encodeJSONStr");
byte[] input = json.getBytes();
Inflater decompresser = new Inflater();
decompresser.setInput(input);
byte[] result = new byte[1000];
int resultLength=0;
resultLength = decompresser.inflate(result);
decompresser.end();
String outputString = new String(result, 0, resultLength, "UTF-8");
System.out.println("\n\n resultLength>>>"+resultLength); // O/P comes as Zero

Can someone point put the issue in here or some better approach for compression of data when sending from Flex to Java ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

请止步禁区 2024-09-12 08:19:43

前段时间我写了一篇关于在 flex/java 之间发送压缩数据的短文,也许它有帮助: http://cornelcranga.com/2008/07/actionscript-compressing-strings/

Some time ago I wrote a short post about sending compressed data between flex/java, maybe it helps: http://cornelcreanga.com/2008/07/actionscript-compressing-strings/

兔小萌 2024-09-12 08:19:43

首先,您应该尝试 Flex 是否正确执行 zLib 压缩(通过解压缩使用其他工具发送的数据)。

在Java方面,您可以尝试使用 InflaterInputStream 比更底层的 Inflater 更容易处理。我在 Java 本机实现方面遇到了一些问题,最终使用了 jZlib 它提供了 zlib 压缩解压缩在纯Java中。

First you should try if Flex does the zLib compression properly (by uncompressing the data sent with another tool).

On the Java side you can try to use the InflaterInputStream which is easier to handle than the more low level Inflater. I had some issues with the Java native implementation and ended up using the jZlib which offers a zlib compression uncompression in pure Java.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文