/** * Writes the autodiscover SOAP request. * * @param requestUrl Request URL. * @throws javax.xml.stream.XMLStreamException the xML stream exception * @throws microsoft.exchange.webservices.data.exception.ServiceXmlSerializationException the * service xml serialization exception */ protected void writeSoapRequest(URI requestUrl, EwsServiceXmlWriter writer) throws XMLStreamException, ServiceXmlSerializationException { if (writer.isRequireWSSecurityUtilityNamespace()) { writer.writeAttributeValue( "xmlns", EwsUtilities.WSSecurityUtilityNamespacePrefix, EwsUtilities.WSSecurityUtilityNamespace); } writer.writeStartDocument(); writer.writeStartElement(XmlNamespace.Soap, XmlElementNames.SOAPEnvelopeElementName); writer.writeAttributeValue( "xmlns", EwsUtilities.getNamespacePrefix(XmlNamespace.Soap), EwsUtilities.getNamespaceUri(XmlNamespace.Soap)); writer.writeAttributeValue( "xmlns", EwsUtilities.AutodiscoverSoapNamespacePrefix, EwsUtilities.AutodiscoverSoapNamespace); writer.writeAttributeValue( "xmlns", EwsUtilities.WSAddressingNamespacePrefix, EwsUtilities.WSAddressingNamespace); writer.writeAttributeValue( "xmlns", EwsUtilities.EwsXmlSchemaInstanceNamespacePrefix, EwsUtilities.EwsXmlSchemaInstanceNamespace); writer.writeStartElement(XmlNamespace.Soap, XmlElementNames.SOAPHeaderElementName); if (this.service.getCredentials() != null) { this.service.getCredentials().emitExtraSoapHeaderNamespaceAliases(writer.getInternalWriter()); } writer.writeElementValue( XmlNamespace.Autodiscover, XmlElementNames.RequestedServerVersion, this.service.getRequestedServerVersion().toString()); writer.writeElementValue( XmlNamespace.WSAddressing, XmlElementNames.Action, this.getWsAddressingActionName()); writer.writeElementValue(XmlNamespace.WSAddressing, XmlElementNames.To, requestUrl.toString()); this.writeExtraCustomSoapHeadersToXml(writer); if (this.service.getCredentials() != null) { this.service.getCredentials().serializeWSSecurityHeaders(writer.getInternalWriter()); } this.service.doOnSerializeCustomSoapHeaders(writer.getInternalWriter()); writer.writeEndElement(); // soap:Header writer.writeStartElement(XmlNamespace.Soap, XmlElementNames.SOAPBodyElementName); this.writeBodyToXml(writer); writer.writeEndElement(); // soap:Body writer.writeEndElement(); // soap:Envelope writer.flush(); writer.dispose(); }