docs: def _getResponse(self, http_request):
          """
          Gets and handles the HTTP response from the remote gateway.
          """
          if self.logger:
              self.logger.debug('Sending POST request to %s', self._root_url)
  
          try:
              fbh = self.opener(http_request)
          except urllib2.URLError, e:
              if self.logger:
                  self.logger.exception('Failed request for %s',
                      self._root_url)
  
              raise remoting.RemotingError(str(e))
  
          http_message = fbh.info()
  
          content_encoding = http_message.getheader('Content-Encoding')
          content_length = http_message.getheader('Content-Length') or -1
          content_type = http_message.getheader('Content-Type')
          server = http_message.getheader('Server')
  
          if self.logger:
              self.logger.debug('Content-Type: %r', content_type)
              self.logger.debug('Content-Encoding: %r', content_encoding)
              self.logger.debug('Content-Length: %r', content_length)
              self.logger.debug('Server: %r', server)
  
          if content_type != remoting.CONTENT_TYPE:
              if self.logger:
                  self.logger.debug('Body = %s', fbh.read())
  
              raise remoting.RemotingError('Incorrect MIME type received. '
                  '(got: %s)' % (content_type,))
  
          bytes = fbh.read(int(content_length))
  
          if self.logger:
              self.logger.debug('Read %d bytes for the response', len(bytes))
  
          if content_encoding and content_encoding.strip().lower() == 'gzip':
              if not GzipFile:
                  raise remoting.RemotingError(
                      'Decompression of Content-Encoding: %s not available.' % (
                          content_encoding,))
  
              compressedstream = StringIO(bytes)
              gzipper = GzipFile(fileobj=compressedstream)
              bytes = gzipper.read()
              gzipper.close()
  
          response = remoting.decode(bytes, strict=self.strict)
  
          if self.logger:
              self.logger.debug('Response: %s', response)
  
          if remoting.APPEND_TO_GATEWAY_URL in response.headers:
              self.original_url += response.headers[remoting.APPEND_TO_GATEWAY_URL]
  
              self._setUrl(self.original_url)
          elif remoting.REPLACE_GATEWAY_URL in response.headers:
              self.original_url = response.headers[remoting.REPLACE_GATEWAY_URL]
  
              self._setUrl(self.original_url)
  
          if remoting.REQUEST_PERSISTENT_HEADER in response.headers:
              data = response.headers[remoting.REQUEST_PERSISTENT_HEADER]
  
              for k, v in data.iteritems():
                  self.headers[k] = v
  
          return response