docs: def _download_response(self):
          """Returns a response body string from the server."""
  
          if self.network.limit_rate:
              self.network._delay_call()
  
          data = []
          for name in self.params.keys():
              data.append("=".join((name, url_quote_plus(_string(self.params[name])))))
          data = "&".join(data)
  
          headers = {
              "Content-type": "application/x-www-form-urlencoded",
              "Accept-Charset": "utf-8",
              "User-Agent": "pylast" + "/" + __version__,
          }
  
          (host_name, host_subdir) = self.network.ws_server
  
          if self.network.is_proxy_enabled():
              conn = HTTPSConnection(
                  context=SSL_CONTEXT,
                  host=self.network._get_proxy()[0],
                  port=self.network._get_proxy()[1],
              )
  
              try:
                  conn.request(
                      method="POST",
                      url="https://" + host_name + host_subdir,
                      body=data,
                      headers=headers,
                  )
              except Exception as e:
                  raise NetworkError(self.network, e)
  
          else:
              conn = HTTPSConnection(context=SSL_CONTEXT, host=host_name)
  
              try:
                  conn.request(method="POST", url=host_subdir, body=data, headers=headers)
              except Exception as e:
                  raise NetworkError(self.network, e)
  
          try:
              response_text = _unicode(conn.getresponse().read())
          except Exception as e:
              raise MalformedResponseError(self.network, e)
  
          try:
              self._check_response_for_errors(response_text)
          finally:
              conn.close()
          return response_text