docs: def _Dispatch(ps, server, SendResponse, SendFault, post, action, nsdict={}, **kw):
      '''Send ParsedSoap instance to ServiceContainer, which dispatches to
      appropriate service via post, and method via action.  Response is a
      self-describing pyobj, which is passed to a SoapWriter.
  
      Call SendResponse or SendFault to send the reply back, appropriately.
          server -- ServiceContainer instance
  
      '''
      localURL = 'http://%s:%d%s' %(server.server_name,server.server_port,post)
      address = action
      service = server.getNode(post)
      isWSResource = False
      if isinstance(service, WSAResource):
          isWSResource = True
          service.setServiceURL(localURL)
          address = Address()
          try:
              address.parse(ps)
          except Exception, e:
              return SendFault(FaultFromException(e, 0, sys.exc_info()[2]), **kw)
          if action and action != address.getAction():
              e = WSActionException('SOAP Action("%s") must match WS-Action("%s") if specified.' \
                  %(action,address.getAction()))
              return SendFault(FaultFromException(e, 0, None), **kw)
          action = address.getAction()
  
      if isinstance(service, ServiceInterface) is False:
          e = NoSuchService('no service at POST(%s) in container: %s' %(post,server))
          return SendFault(FaultFromException(e, 0, sys.exc_info()[2]), **kw)
  
      if not service.authorize(None, post, action):
          return SendFault(Fault(Fault.Server, "Not authorized"), code=401)
          #try:
          #    raise NotAuthorized()
          #except Exception, e:
              #return SendFault(FaultFromException(e, 0, None), code=401, **kw)
              ##return SendFault(FaultFromException(NotAuthorized(), 0, None), code=401, **kw)
  
      try:
          method = service.getOperation(ps, address)
      except Exception, e:
          return SendFault(FaultFromException(e, 0, sys.exc_info()[2]), **kw)
  
      try:
          if isWSResource is True: 
              request,result = method(ps, address)
          else: 
              request,result = method(ps)
      except Exception, e:
          return SendFault(FaultFromException(e, 0, sys.exc_info()[2]), **kw)
  
      # Verify if Signed
      service.verify(ps)
  
      # If No response just return.
      if result is None:
          return SendResponse('', **kw)
  
      sw = SoapWriter(nsdict=nsdict)
      try:
          sw.serialize(result)
      except Exception, e:
          return SendFault(FaultFromException(e, 0, sys.exc_info()[2]), **kw)
  
      if isWSResource is True:
          action = service.getResponseAction(ps, action)
          addressRsp = Address(action=action)
          try:
              addressRsp.setResponseFromWSAddress(address, localURL)
              addressRsp.serialize(sw)
          except Exception, e:
              return SendFault(FaultFromException(e, 0, sys.exc_info()[2]), **kw)
  
      # Create Signatures
      service.sign(sw)
  
      try:
          soapdata = str(sw)
          return SendResponse(soapdata, **kw)
      except Exception, e:
          return SendFault(FaultFromException(e, 0, sys.exc_info()[2]), **kw)