Kalenderereignisse von Exchange 2016 abrufen

BoneyM

Mitglied
Hallo,

ich bin recht blutiger Anfänger in Sachen Java, habe nur etwas Erfahrung in anderen Sprachen. In PHP und Python habe ich mal eine Abfrage von Exchange gemacht und weiss was das für ein Akt war bis alles passte. Als Server kommt ein im lokalen Netzwerk vorhandener Exchange 2016 zum Einsatz, welcher in einer Active-Directory Domäne integriert ist. Dort habe ich ein Konto.

Nun habe ich das versucht in Java umzusetzen und dafür die Microsoft Library verwendet. Ich nutze IntelliJ IDEA als IDE und JDK10 als Plattform auf einem Windows 10 (64 Bit). Über Maven habe ich mir: ews-java-api 2.0 und die abhängige jaxb-api 2.3.1 und 2.4.0 besorgt und in den Classpath integriert.

Das Compilat funktionert aber ich erhalte einen Laufzeitfehler:

The request failed. Für die angegebene Nachricht wurde kein Action-Header mit Namespace "http://www.w3.org/2005/08/addressing" gefunden.

Java:
public class wedExchangeListener  {
    static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
        public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) {
            return true; //redirectionUrl.toUpperCase().startsWith("https://");
        }
    }
    public static void main(String[] args) throws Exception {
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
        ExchangeCredentials cred = new WebCredentials("adusername@addomain.de", "adpassword");
        service.setCredentials(cred);
        service.setUrl(new URI("https://mail.maildomain.de/autodiscover/autodiscover.svc"));

        service.setTraceEnabled(true);
        service.setTraceFlags(EnumSet.allOf(TraceFlags.class));
        service.setTraceListener(new ITraceListener() {
            @Override
            public void trace(String traceType, String traceMessage) {
                System.out.println("Type: "+traceType+" Message: "+traceMessage);
            }
        });

        Mailbox mbox = new Mailbox("vorname.nachnamen@maildomain.de");
        FolderId folderId = new FolderId(WellKnownFolderName.Calendar, mbox);
        try {
            Folder folder = Folder.bind(service, folderId);
        } catch (ServiceRequestException e) {
            System.out.println(e.getMessage());
        }
        
        // hier soll es mal weiter gehen...
    }

}

Über den Debug-Trace konnte ich ermitteln das folgender SOAP-Request geschickt wird:

XML:
<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
        <soap:Header>
            <t:RequestServerVersion Version="Exchange2010_SP1"></t:RequestServerVersion>
        </soap:Header>
        <soap:Body>
            <m:GetFolder>
                <m:FolderShape>
                    <t:BaseShape>AllProperties</t:BaseShape>
                </m:FolderShape>
                <m:FolderIds>
                    <t:DistinguishedFolderId Id="calendar">
                        <t:Mailbox>
                            <t:EmailAddress>vorname.nachname@webdomain.de</t:EmailAddress>
                        </t:Mailbox>
                    </t:DistinguishedFolderId>
                </m:FolderIds>
            </m:GetFolder>
        </soap:Body>
    </soap:Envelope>

Der zurückgelieferte Fehler im SOAP-Envelope schaut dann so aus:

XML:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing">
    <s:Header>
        <a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/fault</a:Action>
        <a:FaultDetail><a:ProblemHeaderQName>a:Action</a:ProblemHeaderQName></a:FaultDetail>
    </s:Header>
    <s:Body>
        <s:Fault>
            <faultcode>a:MessageAddressingHeaderRequired</faultcode>
            <faultstring xml:lang="de-DE">Für die angegebene Nachricht wurde kein Action-Header mit Namespace "http://www.w3.org/2005/08/addressing" gefunden.</faultstring>
        </s:Fault>
    </s:Body>
</s:Envelope>
 

Neue Themen


Oben