How to authenticate the EWS Java API

We use the Java EWS API to use the Outlook calendar for our Java application. I have problems checking for EWS.

I tried the application in the cloud forecast account provided by the rackspace platform and everything works fine, so I know the credentials are accurate.

Here is the code:

import java.net.URI; import java.net.URISyntaxException; import microsoft.exchange.webservices.data.*; public class TestClass { public static void main(String[] args) { TestClass obj = new TestClass(); obj.testMethod(); } public void testMethod() { ExchangeService service = new ExchangeService( ExchangeVersion.Exchange2007_SP1); ExchangeCredentials credentials = new WebCredentials("username", "password"); service.setCredentials(credentials); try { service.setUrl(new URI("https://domain/EWS/Exchange.asmx")); } catch (URISyntaxException e) { e.printStackTrace(); } EmailMessage msg; try { msg = new EmailMessage(service); msg.setSubject("hello world"); msg.setBody(MessageBody .getMessageBodyFromText("Sent using the EWS API")); msg.getToRecipients().add("test@test.com"); msg.send(); } catch (Exception e) { e.printStackTrace(); } } } 

URL for rackspace: https://connect.emailsrvr.com/EWS/Exchange.asmx When I put the username and password for this account and it works, I see the console spitting it out:

 Apr 05, 2013 1:40:28 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme INFO: NTLM authentication scheme selected 

Our client uses ExchangeVersion.Exchange2007_SP1, while Rackspace uses ExchangeVersion.Exchange2010. But when I use the credentials (username, password and URL) that our client provided, I get this error:

 Apr 05, 2013 1:49:13 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme INFO: Basic authentication scheme selected Apr 05, 2013 1:49:13 PM org.apache.commons.httpclient.HttpMethodDirector processAuthenticationResponse SEVERE: Invalid challenge: Basic org.apache.commons.httpclient.auth.MalformedChallengeException: Invalid challenge: Basic at org.apache.commons.httpclient.auth.AuthChallengeParser.extractParams(AuthChallengeParser.java:98) at org.apache.commons.httpclient.auth.RFC2617Scheme.processChallenge(RFC2617Scheme.java:94) at org.apache.commons.httpclient.auth.BasicScheme.processChallenge(BasicScheme.java:112) at org.apache.commons.httpclient.auth.AuthChallengeProcessor.processChallenge(AuthChallengeProcessor.java:162) at org.apache.commons.httpclient.HttpMethodDirector.processWWWAuthChallenge(HttpMethodDirector.java:694) at org.apache.commons.httpclient.HttpMethodDirector.processAuthenticationResponse(HttpMethodDirector.java:668) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:193) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) at microsoft.exchange.webservices.data.HttpClientWebRequest.executeRequest(HttpClientWebRequest.java:358) at microsoft.exchange.webservices.data.ServiceRequestBase.getEwsHttpWebResponse(ServiceRequestBase.java:930) at microsoft.exchange.webservices.data.ServiceRequestBase.validateAndEmitRequest(ServiceRequestBase.java:825) at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:46) at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:144) at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(ExchangeService.java:464) at microsoft.exchange.webservices.data.ExchangeService.createItem(ExchangeService.java:535) at microsoft.exchange.webservices.data.Item.internalCreate(Item.java:215) at microsoft.exchange.webservices.data.EmailMessage.internalSend(EmailMessage.java:125) at microsoft.exchange.webservices.data.EmailMessage.send(EmailMessage.java:253) at com.aurora.trials.TestClass.testMethod(TestClass.java:43) at com.aurora.trials.TestClass.main(TestClass.java:17) microsoft.exchange.webservices.data.EWSHttpException: Connection not established at microsoft.exchange.webservices.data.HttpClientWebRequest.throwIfConnIsNull(HttpClientWebRequest.java:394) at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseHeaders(HttpClientWebRequest.java:280) at microsoft.exchange.webservices.data.ExchangeServiceBase.processHttpResponseHeaders(ExchangeServiceBase.java:1045) at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:58) at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:144) at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(ExchangeService.java:464) at microsoft.exchange.webservices.data.ExchangeService.createItem(ExchangeService.java:535) at microsoft.exchange.webservices.data.Item.internalCreate(Item.java:215) at microsoft.exchange.webservices.data.EmailMessage.internalSend(EmailMessage.java:125) at microsoft.exchange.webservices.data.EmailMessage.send(EmailMessage.java:253) at com.aurora.trials.TestClass.testMethod(TestClass.java:43) at com.aurora.trials.TestClass.main(TestClass.java:17) 

I could not find a solution to this problem. Please provide any information you think I can get for EWS. What causes these exceptions?

+8
java exchangewebservices ewsjavaapi
source share
1 answer

I had the same errors and spent 5 hours fixing this. My conclusion is that you should not spend more time getting the EWS code base to work, the EWS code is confused, and you will need to log in under the hood to fix errors in this library.

I decided to use javax.mail, which does what I need. stack overflow

+3
source share

All Articles