docs: def soap_action(self, service, action, payloadbody):
          """Do a soap request."""
          payload = self.soapenvelope.format(body=payloadbody).encode('utf-8')
          headers = {"Host": self.url,
                     "Content-Type": "text/xml; charset=UTF-8",
                     "Cache-Control": "no-cache",
                     "Content-Length": str(len(payload)),
                     "SOAPAction": action}
          try:
              self.last_exception = None
              response = requests.post(url=self.url + service, headers=headers,
                                       data=payload, cookies=self.cookies)
          except requests.exceptions.RequestException as exp:
              self.last_exception = exp
              return False
          if response.status_code != 200:
              self.last_response = response
              return False
          self.cookies = response.cookies
          try:
              xdoc = xml.etree.ElementTree.fromstring(response.text)
          except xml.etree.ElementTree.ParseError as exp:
              self.last_exception = exp
              self.last_response = response
              return False
          return xdoc