我正在开发一个在 python 中使用 web 服务的应用程序,双方(服务器和客户端)都是用 Python 开发的,并且使用 SOAPpy 作为 web 服务,但是,你知道,xml 太冗长,我想压缩它,但到目前为止正如我在谷歌中搜索的那样,我找不到有用的东西。
问问题
483 次
1 回答
2
您可以将 HTTP 标头添加到 SOAPpy 调用,如此处所示(此示例发送 cookie,但您可以将其概括为添加不同的标头)- 请求压缩,添加 header Accept-Encoding: gzip
。Web 服务器(不是应用程序服务器,如 Python 中的“SOAPpy 服务器”,而是它在其上运行的实际 HTTP 服务器,例如 Apache)应该提供压缩并在响应中包含一个标头来Content-Encoding: gzip
确认(如果没有'不能正常工作,你必须继承传输类并自己插入压缩——我手头没有 SOAPpy 安装来检查)。
缺少的一点是,如何SOAPpy.SOAPProxy
在进一步处理之前诱使您对有效负载进行解压缩——正确的方法是再次进行 subclass HTTPTransport
,就像 add-header 部分一样;在上面的 URL 中,查看该行data = response.read()
并考虑检查标头(以确认内容编码是 gzip 所需的)并根据需要解压缩。
处理 gzip 压缩和解压,当然可以使用 Python 标准库的zlib模块(不是gzip
模块,它添加zlib
到头元数据处理来制作和读取.gz
文件——你不是在处理.gz
文件,而是在处理流用gzip
算法压缩,这就是zlib
工作)。
于 2010-03-06T06:49:57.793 回答