Performs a POST request.  "valuemap" is a dict sent as "application/x-www-form-urlencoded".
        "query" is as for get().  Return is same as get().

def post(self, path, valuemap=None, query=None):
        """
        Performs a POST request.  "valuemap" is a dict sent as "application/x-www-form-urlencoded".
        "query" is as for get().  Return is same as get().
    """
        self.lastpath = path
        if query is not None:
            self.lastpath += '?' + urlencode(query)
        if valuemap:
            self.http.request('POST', self.lastpath, urlencode(valuemap),
                                {"Content-type": "application/x-www-form-urlencoded"})
        else:
            self.http.request('POST', self.lastpath, '')
        resp = self.http.getresponse()
        ctype = resp.getheader('Content-Type')
        data = resp.read().decode('utf-8')
        self.log.debug("Request '%s' status %d, %s length %d", self.lastpath, resp.status, ctype, len(data))
        if resp.status < 400:
            return (resp.status, data, ctype)
        else:
            raise HttpError(code=resp.status, content_type=ctype, content=data)