0
votes

I'm currently trying to connect to our company's Exchange server using the EWS Java API. Unfortunately when try to execute anything (either autodiscover or some other action after using setUrl manually) I receive the following error:

Apr 17, 2013 7:57:10 AM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
Apr 17, 2013 7:57:10 AM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
Apr 17, 2013 7:57:11 AM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
Apr 17, 2013 7:57:11 AM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
Apr 17, 2013 7:57:12 AM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
Apr 17, 2013 7:57:12 AM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
Exception in thread "main" microsoft.exchange.webservices.data.ServiceRequestException: The request failed. Connection refused: connect
    at microsoft.exchange.webservices.data.ServiceRequestBase.getEwsHttpWebResponse(Unknown Source)
    at microsoft.exchange.webservices.data.ServiceRequestBase.validateAndEmitRequest(Unknown Source)
    at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(Unknown Source)
    at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(Unknown Source)
    at microsoft.exchange.webservices.data.ExchangeService.bindToFolder(Unknown Source)
    at microsoft.exchange.webservices.data.ExchangeService.bindToFolder(Unknown Source)
    at microsoft.exchange.webservices.data.CalendarFolder.bind(Unknown Source)
    at microsoft.exchange.webservices.data.CalendarFolder.bind(Unknown Source)
    at er.dream.tgif.outlook.OutlookTest.findAppointments(OutlookTest.java:59)
    at er.dream.tgif.outlook.OutlookTest.main(OutlookTest.java:45)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:75)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618)
    at microsoft.exchange.webservices.data.EwsSSLProtocolSocketFactory.createSocket(Unknown Source)
    at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    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(Unknown Source)
    ... 10 more

I tried logging in using my credentials to the exchange servers web interface and this is working fine. Assuming it might be related to SSL issues, I also tried implementing a dummy TrustManager and setting it as default for HttpsUrlConnections.

Unfortunately this didn't help and the error still persists.

One notable fact: In my Outlook I can see that the Exchange server is configured to use a proxy server and a specific SSL URL to connect to it. (Proxy authentication is set to NTLM) I'm not quite sure how to reflect this in my coding.

Might this be causing the exception or am I looking at a different issue here?

1

1 Answers

0
votes

The releases notes of Java EWS API mentions:

While running on Windows 7 OS, 32-bit, and if the application generates the following error : ERROR : Request failed. Unable to get response codejava.io.IOException: Authentication failure

So if this is your case, refer to the release notes provided with EWS java Api (and/or gooole this exact sentence to find them back).

Be sure to use the correct Web Service end point and port because it seems that the socket you are using is closed (connection refused). This should be like this:

"https://YOURDOMAIN.com/EWS/Exchange.asmx"

The code mentionned in this other StackOverflow question worked for me (Exchange 2010 + NTLM Authentication Scheme).