sudsをgzipに対応させる.

PythonのsudsっていうSOAPライブラリを使ってるんだけど,gzip対応してない. ちょっと速度がほしいので,gzipも使えるようにした.

#!/usr/bin/env python
#
# gzip_suds_test.py
#
# Author:   Hiromasa Ihara (miettal)
# URL:      http://miettal.com
# Created:  2014-05-22
#

# note:suds-jurko
from suds.client import Client

# for gzip transport
from suds.transport.http import HttpTransport
import gzip
from StringIO import StringIO

class GzipTransport(HttpTransport) :
  def send(self, request):
    request.headers['Accept-encoding'] = 'gzip'
    result = HttpTransport.send(self, request)
    if result.headers['content-encoding'] == 'gzip' :
      buf = StringIO(result.message)
      f = gzip.GzipFile(fileobj=buf)
      result.message = f.read()
    return result

if __name__ == '__main__':
  wsdl_url = "..."
  soap_client = Client(wsdl_url, transport=GzipTransport())

ここを参考にした. http://stackoverflow.com/questions/3947120/does-python-urllib2-automatically-uncompress-gzip-data-fetched-from-webpage おわり.