WriteSoapRequest method
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();
}