我将一些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时,是否可以指出问题或更好的数据压缩方法?
答案 0 :(得分:2)
前段时间我写了一篇关于在flex / java之间发送压缩数据的简短帖子,也许有帮助:http://cornelcreanga.com/2008/07/actionscript-compressing-strings/
答案 1 :(得分:0)
首先,您应该尝试Flex是否正确执行zLib压缩(通过解压缩使用其他工具发送的数据)。
在Java方面,您可以尝试使用比更低级别的Inflater更容易处理的InflaterInputStream。我在Java本机实现方面遇到了一些问题,最终使用了jZlib,它在纯Java中提供了zlib压缩解压缩。