WriteSoapRequest method

void WriteSoapRequest(
  1. Uri? requestUrl,
  2. EwsServiceXmlWriter writer
)
Writes the autodiscover SOAP request. Request URL. The writer.

Implementation

void WriteSoapRequest(Uri? requestUrl, EwsServiceXmlWriter writer) {
  writer.WriteStartElement(
      XmlNamespace.Soap, XmlElementNames.SOAPEnvelopeElementName);
  writer.WriteAttributeValueWithPrefix(
      "xmlns",
      EwsUtilities.AutodiscoverSoapNamespacePrefix,
      EwsUtilities.AutodiscoverSoapNamespace);
  writer.WriteAttributeValueWithPrefix(
      "xmlns",
      EwsUtilities.WSAddressingNamespacePrefix,
      EwsUtilities.WSAddressingNamespace);
  writer.WriteAttributeValueWithPrefix(
      "xmlns",
      EwsUtilities.EwsXmlSchemaInstanceNamespacePrefix,
      EwsUtilities.EwsXmlSchemaInstanceNamespace);
  if (writer.RequireWSSecurityUtilityNamespace) {
    writer.WriteAttributeValueWithPrefix(
        "xmlns",
        EwsUtilities.WSSecurityUtilityNamespacePrefix,
        EwsUtilities.WSSecurityUtilityNamespace);
  }

  writer.WriteStartElement(
      XmlNamespace.Soap, XmlElementNames.SOAPHeaderElementName);

  if (this.Service.Credentials != null) {
    this
        .Service
        .Credentials!
        .EmitExtraSoapHeaderNamespaceAliases(writer.InternalWriter);
  }

  writer.WriteElementValueWithNamespace(
      XmlNamespace.Autodiscover,
      XmlElementNames.RequestedServerVersion,
      this.Service.RequestedServerVersion);

  writer.WriteElementValueWithNamespace(XmlNamespace.WSAddressing,
      XmlElementNames.Action, this.GetWsAddressingActionName());

  writer.WriteElementValueWithNamespace(
      XmlNamespace.WSAddressing, XmlElementNames.To, requestUrl.toString());

  this.WriteExtraCustomSoapHeadersToXml(writer);

  if (this.Service.Credentials != null) {
    this
        .Service
        .Credentials!
        .SerializeWSSecurityHeaders(writer.InternalWriter);
  }

  this.Service.DoOnSerializeCustomSoapHeaders(writer.InternalWriter);

  writer.WriteEndElement(); // soap:Header

  writer.WriteStartElement(
      XmlNamespace.Soap, XmlElementNames.SOAPBodyElementName);

  this.WriteBodyToXml(writer);

  writer.WriteEndElement(); // soap:Body
  writer.WriteEndElement(); // soap:Envelope
  writer.Flush();
}