EWS Java 1.2 - 无法连接到公司Exchange Server

时间:2013-04-17 10:50:56

标签: java ssl exchange-server exchangewebservices ewsjavaapi

我目前正在尝试使用EWS Java API连接到我们公司的Exchange服务器。 不幸的是,当尝试执行任何操作(手动使用setUrl后自动发现或其他操作)时,我收到以下错误:

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

我尝试使用我的凭据登录到Exchange服务器Web界面,这很正常。假设它可能与SSL问题有关,我还尝试实现一个虚拟的TrustManager并将其设置为HttpsUrlConnections的默认值。

不幸的是,这没有帮助,错误仍然存​​在。

一个值得注意的事实:在我的Outlook中,我可以看到Exchange服务器配置为使用代理服务器和特定的SSL URL连接到它。 (代理身份验证设置为NTLM) 我不太确定如何在编码中反映这一点。

这可能导致异常,还是我在这里看另一个问题?

1 个答案:

答案 0 :(得分:0)

Java EWS API的发行说明:

  

在Windows 7操作系统(32位)上运行时,如果应用程序生成以下错误:   错误:请求失败。无法获得响应codejava.io.IOException:身份验证失败

因此,如果是这种情况,请参阅随EWS java Api提供的发行说明(和/或gooole这个确切的句子以找回它们)。

请确保使用正确的Web服务端点和端口,因为您正在使用的套接字似乎已关闭(连接被拒绝)。这应该是这样的:

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

this other StackOverflow question中提到的代码对我有用(Exchange 2010 + NTLM身份验证方案)。