from zeep import helpers, Client import types class SoapConnector(object): def __init__(self, base_url): self._client = Client(base_url) def send(self, method, data): connector = getattr(self._client.service, method) result = connector(**data) return helpers.serialize_object(result) \ if isinstance(result, types.ListType) or isinstance(result, types.ClassType) else result client = SoapConnector("http://www.webservicex.net/ConvertSpeed.asmx?WSDL") data = { "speed": "100", "FromUnit": "kilometersPerhour", "ToUnit": "milesPerhour" } result = client.send('ConvertSpeed', data) print result