<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def invoke(self, ns, request_name, params, auth_token, simplify=False):
 """ Invokes zimbra soap request. """

        ZimbraClientTransport.invoke(self,
                                     ns,
                                     request_name,
                                     params,
                                     auth_token,
                                     simplify)

        headers = SOAPpy.Types.headerType()

        if auth_token.token != None:
            data={sconstant.E_AUTH_TOKEN: auth_token.token,
                  sconstant.E_SESSION_ID: auth_token.session_id}
            context = SOAPpy.Types.structType(data=data, name=sconstant.CONTEXT)
            context._validURIs = []
            context._ns = (zconstant.SOAP_DEFAULT_PREFIX, zconstant.NS_ZIMBRA_URL)
            headers.context = context

        proxy = SOAPpy.SOAPProxy(self.soap_url,
                                 ns,
                                 header=headers,
                                 noroot=1,
                                 simplify_objects=simplify)
        proxy.config.debug = self.log.isEnabledFor(logging.DEBUG)
        proxy.config.strictNamespaces = 0
        proxy.config.buildWithNamespacePrefix = 0
        proxy.transport = self.http_transport

        _parseSOAP = SOAPpy.Parser._parseSOAP
        SOAPpy.Parser._parseSOAP = parseSOAP
        try:
            m = proxy.__getattr__(request_name)
            return m.__call__(**params)
        finally:
            SOAPpy.Parser._parseSOAP = _parseSOAP