EWS Java API 2.0 - The Autodiscover service couldn't be located

ExchangeOnline444 21 Reputation points
2021-02-12T05:31:14.183+00:00

Hi,

I am using EWS Java API 2.0 to access user mailboxes from Exchange 2019 and O365 using autodiscoverUrl() method as EWS URL might change with new Client Access servers.

PFB the code snippet:

 private static ExchangeService exchangeService;

    private static void usingAutodiscovery() {
        exchangeService = new ExchangeService();
        try {
            exchangeService.setTraceEnabled(true);
            exchangeService.setCredentials(new WebCredentials("username", "password", "domain.com"));
            // Set the URL.
            exchangeService.autodiscoverUrl(******@domain.com, new RedirectionUrlCallback());

            Folder inbox = Folder.bind(exchangeService, WellKnownFolderName.Inbox);
            System.out.println("messages: " + inbox.getTotalCount());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        usingAutodiscovery();
    }

    public static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
        public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) {
            return redirectionUrl.toLowerCase().startsWith("https://");
      }
    }
}

But I am getting the below error:

microsoft.exchange.webservices.data.autodiscover.exception.AutodiscoverLocalException: The Autodiscover service couldn't be located.
    at microsoft.exchange.webservices.data.autodiscover.AutodiscoverService.internalGetLegacyUserSettings(AutodiscoverService.java:742)
    at microsoft.exchange.webservices.data.autodiscover.AutodiscoverService.getLegacyUserSettings(AutodiscoverService.java:521)
    at microsoft.exchange.webservices.data.autodiscover.AutodiscoverService.internalGetLegacyUserSettings(AutodiscoverService.java:959)
    at microsoft.exchange.webservices.data.autodiscover.AutodiscoverService.getUserSettings(AutodiscoverService.java:1846)
    at microsoft.exchange.webservices.data.core.ExchangeService.getAutodiscoverUrl(ExchangeService.java:3615)
    at microsoft.exchange.webservices.data.core.ExchangeService.autodiscoverUrl(ExchangeService.java:3572)
    at com.sample.autodiscover.UsingAutodiscover2.usingAutodiscovery(UsingAutodiscover2.java:47)
    at com.sample.autodiscover.UsingAutodiscover2.main(UsingAutodiscover2.java:60)

We have below details configured:
AutodiscoverInternalUri = https://autodiscover.domainname.com/Autodiscover/Autodiscover.xml
External EWS URL = https://domainname.com/ews/exchange.asmx

Exchange | Exchange Server | Development
Exchange | Hybrid management
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Anonymous
    2021-02-15T02:42:13.55+00:00

    Hi @ExchangeOnline444 ,

    Try to replace

    exchangeService.setCredentials(new WebCredentials("username", "password", "domain.com"));  
    

    with

    exchangeService.setCredentials(new WebCredentials("emailAddress", "password"));  
    

    Also test the autodiscover service with ECRCA
    Regards,
    Lou


    If the response is helpful, please click "Accept Answer" and upvote it.
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.