我有一个采用Adobe Flex 3和Python 2.5开发的Web应用(部署在Google App Engine上)。使用Python创建了一个RESTful Web服务,其结果目前以XML格式呈现,并通过HttpService对象被Flex读取。
现在的主要目标是压缩XML,以使得HttpService的send()方法和结果事件之间的时间尽可能短。我查阅了Python文档并成功使用zlib.compress()来压缩XML结果。
然后,我将HttpService的结果类型从“xml”设置为“text”,并尝试使用ByteArrays将字符串解压缩回XML。这里我失败了。我的操作类似于这样:
现在的主要目标是压缩XML,以使得HttpService的send()方法和结果事件之间的时间尽可能短。我查阅了Python文档并成功使用zlib.compress()来压缩XML结果。
然后,我将HttpService的结果类型从“xml”设置为“text”,并尝试使用ByteArrays将字符串解压缩回XML。这里我失败了。我的操作类似于这样:
var byteArray:ByteArray = new ByteArray();
byteArray.writeUTF( event.result.toString() );
byteArray.uncompress();
var xmlResult:XML = byteArray.readUTF();
在byteArray.uncompress()处抛出异常,提示无法解压缩byteArray。当我跟踪byteArray的长度时,它变成了0。
无法弄清楚我做错了什么。欢迎所有帮助。
-- 编辑 --
代码:
# compressing the xml result in Python
print zlib.compress(xmlResult)
# decompresisng it in AS3
var byteArray:ByteArray = new ByteArray();
byteArray.writeUTF( event.result.toString() );
byteArray.uncompress()
事件类型为ResultEvent。
错误信息:
错误:错误#2058:解压数据时出错。
可能的原因是byteArray.bytesAvailable的值为0,这意味着python生成的原始字节没有正确地写入byteArray中。
-- Sri