code: def _do_post(self, query, extra_headers=[]):
          
          i = self.institution
          logging.debug('posting data to %s' % i.url)
          garbage, path = splittype(i.url)
          host, selector = splithost(path)
          h = HTTPSConnection(host, timeout=60)
          # Discover requires a particular ordering of headers, so send the
          # request step by step.
          h.putrequest('POST', selector, skip_host=True,
                       skip_accept_encoding=True)
          headers = [
              ('Content-Type', 'application/x-ofx'),
              ('Host', host),
              ('Content-Length', len(query)),
              ('Connection', 'Keep-Alive')
          ]
          if self.accept:
              headers.append(('Accept', self.accept))
          if self.user_agent:
              headers.append(('User-Agent', self.user_agent))
          for ehname, ehval in extra_headers:
              headers.append((ehname, ehval))
          logging.debug('---- request headers ----')
          for hname, hval in headers:
              logging.debug('%s: %s', hname, hval)
              h.putheader(hname, hval)
          logging.debug('---- request body (query) ----')
          logging.debug(query)
          h.endheaders(query.encode())
          res = h.getresponse()
          response = res.read().decode('ascii', 'ignore')
          logging.debug('---- response ----')
          logging.debug(res.__dict__)
          logging.debug('Headers: %s', res.getheaders())
          logging.debug(response)
          res.close()
          return res, response
docs: Do a POST to the Institution.
  
          :param query: Body content to POST (OFX Query)
          :type query: str
          :param extra_headers: Extra headers to send with the request, as a list
            of (Name, Value) header 2-tuples.
          :type extra_headers: list
          :return: 2-tuple of (HTTPResponse, str response body)
          :rtype: tuple