def _do_post(self, query, extra_headers=[]):
i = self.institution<EOL>logging.debug('<STR_LIT>' % i.url)<EOL>garbage, path = splittype(i.url)<EOL>host, selector = splithost(path)<EOL>h = HTTPSConnection(host, timeout=<NUM_LIT>)<EOL>h.putrequest('<STR_LIT:POST>', selector, skip_host=True,<EOL>skip_accept_encoding=True)<EOL>headers = [<EOL>('<STR_LIT:Content-Type>', '<STR_LIT>'),<EOL>('<STR_LIT>', host),<EOL>('<STR_LIT>', len(query)),<EOL>('<STR_LIT>', '<STR_LIT>')<EOL>]<EOL>if self.accept:<EOL><INDENT>headers.append(('<STR_LIT>', self.accept))<EOL><DEDENT>if self.user_agent:<EOL><INDENT>headers.append(('<STR_LIT>', self.user_agent))<EOL><DEDENT>for ehname, ehval in extra_headers:<EOL><INDENT>headers.append((ehname, ehval))<EOL><DEDENT>logging.debug('<STR_LIT>')<EOL>for hname, hval in headers:<EOL><INDENT>logging.debug('<STR_LIT>', hname, hval)<EOL>h.putheader(hname, hval)<EOL><DEDENT>logging.debug('<STR_LIT>')<EOL>logging.debug(query)<EOL>h.endheaders(query.encode())<EOL>res = h.getresponse()<EOL>response = res.read().decode('<STR_LIT:ascii>', '<STR_LIT:ignore>')<EOL>logging.debug('<STR_LIT>')<EOL>logging.debug(res.__dict__)<EOL>logging.debug('<STR_LIT>', res.getheaders())<EOL>logging.debug(response)<EOL>res.close()<EOL>return res, response<EOL>
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