docs: def soap_request(self, url, urn, action, params, body_elem="m"):
          """Send a SOAP request to the TV."""
          soap_body = (
              '<?xml version="1.0" encoding="utf-8"?>'
              '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"'
              ' s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'
              '<s:Body>'
              '<{body_elem}:{action} xmlns:{body_elem}="urn:{urn}">'
              '{params}'
              '</{body_elem}:{action}>'
              '</s:Body>'
              '</s:Envelope>'
          ).format(action=action, urn=urn, params=params, body_elem=body_elem).encode('utf-8')
  
          headers = {
              'Host': '{}:{}'.format(self._host, self._port),
              'Content-Length': len(soap_body),
              'Content-Type': 'text/xml; charset=utf-8"',
              'SOAPAction': '"urn:{}#{}"'.format(urn, action),
          }
  
          url = 'http://{}:{}/{}'.format(self._host, self._port, url)
  
          _LOGGER.debug("Sending to %s:\n%s\n%s", url, headers, soap_body)
          req = Request(url, soap_body, headers)
  
          res = urlopen(req, timeout=5).read()
          _LOGGER.debug("Response: %s", res)
          return res