Вы можете добавить HTTP-заголовки к вызову SOAPpy, как показано здесь (этот пример отправляет куки, но вы можете обобщить его, добавив разные заголовки) - чтобы запросить сжатие, добавьте заголовок Accept-Encoding: gzip
. Веб-сервер (не сервер приложений, как ваш «сервер SOAPpy» в Python, но реальный HTTP-сервер, на котором он работает, например, Apache) должен обеспечить сжатие и иметь в ответе заголовок Content-Encoding: gzip
для подтверждения того, что ( если это не работает должным образом, вам придется создать подкласс транспортного класса и вставить туда сжатие самостоятельно - у меня нет установки SOAPpy для проверки).
Недостающий бит состоит в том, как обмануть SOAPpy.SOAPProxy
в декомпрессии полезной нагрузки перед дальнейшей обработкой - и правильный подход - снова подкласс HTTPTransport
, как для части add-header; в приведенном выше URL-адресе посмотрите на строку data = response.read()
и рассмотрите возможность проверки заголовков (чтобы убедиться, что кодировка содержимого gzip соответствует требованиям) и распаковку при необходимости.
Конечно, для сжатия и распаковки gzip вы можете использовать модуль zlib стандартной библиотеки Python (не модуль gzip
, который добавляет к zlib
обработку метаданных заголовка, чтобы сделать и читать .gz
файлы - вы имеете дело не с .gz
файлами, а с потоками, сжатыми по алгоритму gzip
, и это работа zlib
).