我正在开发一个在python中使用webservices的应用程序,双方(服务器和客户端)都是用Python开发的,并且使用SOAPpy作为webservices,但是,你知道,xml太冗长了,我想压缩它,但据我在谷歌搜索,我找不到有用的东西。
答案 0 :(得分:2)
您可以向SOAPpy调用添加HTTP标头,如图所示here(此示例发送Cookie,但您可以将其概括为添加不同的标头) - 要请求压缩,请添加标头Accept-Encoding: gzip
。 Web服务器(不是应用程序服务器,如Python中的“SOAPpy服务器”,但它在顶层运行的实际HTTP服务器,例如Apache)应提供压缩并在响应中包含标头Content-Encoding: gzip
以确认(如果这不能正常工作,你必须继承传输类的子类并在那里插入压缩 - 我手头没有SOAPpy安装来检查)。
缺少的一点是,如何在进一步处理之前欺骗你的SOAPpy.SOAPProxy
进行有效负载的解压缩 - 而正确的方法又是子类HTTPTransport
,就像add-header部分一样;在上面的URL中,查看行data = response.read()
并考虑检查标题(以确认内容编码是gzip根据需要)并根据需要解压缩。
当然,要处理gzip压缩和解压缩,你可以使用Python标准库的zlib模块(而不是gzip
模块,它增加了zlib
标头元数据处理制作和阅读.gz
个文件 - 您不是处理.gz
个文件,而是使用gzip
算法压缩的流,以及zlib
的工作。< / p>