- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 Adobe Flex 3 和 Python 2.5 开发的 Web 应用程序(部署在 Google App Engine 上)。已在 Python 中创建了一个 RESTful Web 服务,其结果目前为 XML 格式,Flex 使用 HttpService 对象读取该格式。
现在的主要目标是压缩 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..
-- 斯里兰卡
最佳答案
byteArray.writeUTF( event.result.toString() );
应该做什么? zlib.compress() 的结果既不是 unicode 也不是“UTF”(后面没有数字毫无意义!?);它是二进制又名原始字节;您既不应该对它进行解码,也不应该对它进行编码,也不应该对其应用任何其他转换。接收方应立即解压缩它接收到的原始字节,以便恢复传递给 zlib.compress() 的数据。
更新 你有什么文档来支持 byteArray.uncompress()
期待真正的 zlib 流而不是 < strong>deflate 流(即,在你剪掉前 2 个字节和最后 4 个字节之后的 zlib 流)?
ByteArray 的 Flex 3 文档给出这个例子:
bytes.uncompress(CompressionAlgorithm.DEFLATE);
但毫无帮助的是没有说明默认值(如果有的话)是什么。如果有默认值,则不会在任何明显的地方记录,因此您最好使用
bytes.uncompress(CompressionAlgorithm.ZLIB);
使您的意图显而易见。
并且文档讨论的是 writeUTFBytes
方法,而不是 writeUTF
方法。您确定在您的问题中复制/粘贴了准确的接收者代码吗?
更新 2
感谢提供网址。看起来我得到了“帮助”,而不是真正的文档 :=(。有几点:
(1) 是的,有一个明确的inflate()
方法。但是解压缩确实有一个算法参数;它可以是 CompressionAlgorithm.ZLIB(默认值)或 CompressionAlgorithm.DEFLATE ... 有趣的是,后者仅在 Adobe Air 中可用,在 Flash Player 中不可用。至少我们知道 uncompress() 调用看起来正常,我们可以回到将原始字节传输到网络并再次传输到 ByteArray 实例的问题。
(2) 更重要的是,既有writeUTF
(Write a UTF-8 string to the byte stream。UTF-8字符串的字节长度为首先写入,作为 16 位整数,然后是表示字符串字符的字节)和 writeUTFBytes
(将 UTF-8 字符串写入字节流。类似到 writeUTF() 方法,但 writeUTFBytes() 不会在字符串前加上 16 位长度的字)。
无论提供 UTF8 编码字节(无,恕我直言)的优点是什么,您都不希望那里有 2 字节长度的前缀; 使用 writeUTF() 肯定会导致 uncompress() 失败。
开始使用:在二进制数据上使用 Python 打印似乎不是一个好主意(除非 sys.stdout 已被指定为以原始模式运行,而您没有在代码中显示)。
同样,通过 event.result.toString() 获取字符串(类似于 Python unicode 对象,是/否?)——使用 what 然后将其编码为 UTF-8 似乎不太可能工作。
鉴于我直到今天才知道 flex 的存在,我真的无法有效地帮助你。这里有一些关于自给自足的进一步建议,以防很快没有人知道更多的弹性:
(1) 做一些调试。从最小的 XML 文档开始。显示 repr(xml_doc)
。显示 repr(zlib_compress_output)
。在您的 flex 脚本的(精简版)中,使用最接近 repr()
的函数/方法,您可以找到它来显示:event.result
,event.result.toString()
和 writeUTF*()
的结果。确保您了解 zlib.compress() 之后可能发生的一切的影响。仔细阅读文档可能会有所帮助。
(2) 查看如何从 event.result 中获取原始字节。
喂,约翰
关于python - 使用 ByteArrays 解压缩 Zlib 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830665/
我有点想做 the reverse of this. 我不想解压缩并将收集文件添加到 S3 应用户要求: 生成一堆xml文件 使用一些图像(托管在 s3 上的预先存在的图像)压缩 xml 文件 下载
将此添加到域的虚拟主机后 AddOutputFilterByType DEFLATE application/javascript text/javascript text/css 响应头不包含任何内
在 Apache Im 中,通过将以下内容添加到我的 .htaccess 文件来启用输出压缩: # compress text, html, javascript, css, xml: AddOutp
是否可以以压缩格式将请求数据从浏览器发送到服务器? 如果是,我们该怎么做? 最佳答案 压缩从浏览器发送到服务器的数据是不受 native 支持 在浏览器中。 您必须找到一种解决方法,使用客户端语言(可
我正在寻找可以压缩JavaScript源代码的工具。我发现一些网络工具只能删除空格字符?但也许存在更好的工具,可以压缩用户的函数名称、字段名称、删除未使用的字段等。 最佳答案 经常用来压缩JS代码的工
使用赛马博彩场景,假设我有许多单独的投注来预测比赛的前 4 名选手 (superfecta)。 赌注如下... 1/2/3/4 1/2/3/5 1/2/4/3 1/2/4/5 1/2/5/3
我是一名实习生,被要求对 SQL 2008 数据压缩进行一些研究。我们想将 Outlook 电子邮件的几个部分存储在一个表中。问题是我们想将整个电子邮件正文存储在一个字段中,然后又想压缩它。使用 Ch
我目前有一个系统,用户可以在其中上传 MP4 文件,并且可以在移动设备上下载该文件。但有时,这些视频的大小超过 5MB,在我国,大多数人使用 2G。因此,下载大型视频通常需要 15-20 分钟。 有什
假设我有一个带有类型列的简单文档表: Documents Id Type 1 A 2 A 3 B 4 C 5 C 6 A 7 A 8 A 9 B 10 C 用户
我有一个较大字符串中的(子)字符串位置的 data.frame。数据包含(子)字符串的开头及其长度。可以很容易地计算出(子)字符串的结束位置。 data1 start length end #>
我想知道是否 文件加密算法可以设计成它也可以执行文件压缩的事件(任何活生生的例子?)。 我也可以将它集成到移动短信服务中,我的意思是短信吗? 另外我想知道二进制文件...如果纯文本文件以二进制编码
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我们有几个具有大量 JavaScript 的 Java 项目,目前我们使用的是旧版本的 YUICompressor (2.4.2)。然而,我在这篇博文中发现 YUICompressor 正在 depr
从之前关于尝试提高网站性能的文章中,我一直在研究 HTTP 压缩。我读过有关在 IIS 中设置它的信息,但它似乎是所有 IIS 应用程序池的全局事物,我可能不允许这样做,因为还有另一个站点在其上运行。
我有一个 REST 服务,它返回一大块 XML,大约值(value) 150k。 例如http://xmlservice.com/services/RestService.svc/GetLargeXM
我正在尝试获取一个简单的 UglifyJS (v2.3.6) 示例来处理压缩。 具体来说,“未使用”选项,如果从未使用过,变量和函数将被删除。 这是我在命令行上的尝试: echo "function
我正在开发一个项目,如果我的磁盘出现问题,我将在使用 ZLIB 压缩内存块后将其发送到另一个磁盘。然后我计划下载该转储并用于进一步调试。这种压缩和上传将一次完成一个 block - 比如说 1024
LZW 压缩算法在压缩后增加了位大小: 这是压缩函数的代码: // compression void compress(FILE *inputFile, FILE *outputFile) {
我的问题与如何在 3D 地形上存储大量信息有关。这些信息应该是 secret 的,因为它们非常庞大,也应该被压缩。我选择了文件存储,现在我想知道将对象数据加密/压缩(或压缩/加密)到文件的最佳做法。
我使用以下代码来压缩我的文件并且效果很好,但我只想压缩子文件夹而不是在压缩文件中显示树的根。 public boolean zipFileAtPath(String sourcePath, Strin
我是一名优秀的程序员,十分优秀!