简体   繁体   English

使用Java中的自动发现连接到Exchange Server

[英]Connect to Exchange Server using Autodiscover in Java

We are trying to connect to our exchange server using an autodiscover url. 我们正在尝试使用自动发现URL连接到我们的交换服务器。 The url is returning a wsdl file when running using a REST client: 使用REST客户端运行时,URL返回wsdl文件:

System.setProperty("javax.net.ssl.trustStore", "truststore.jks");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");

KeyStore trustStore = KeyStore.getInstance("JKS");
trustStore.load(new FileInputStream("truststore.jks"), null);
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        trustManagerFactory.init(trustStore);

SSLContext ctx = SSLContext.getInstance("SSL");
ctx.init(null, trustManagerFactory.getTrustManagers(), null);

HostnameVerifier hostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier();
ClientConfig config = new com.sun.jersey.api.client.config.DefaultClientConfig();
client = Client.create(config);
config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(hostnameVerifier, ctx));
webResource = client.resource("https://autodiscover.company.com/xxxx/autodiscover.svc");
client.addFilter(new HTTPBasicAuthFilter(username, password));

But it is returning 401 unauthorized error when running using exchange service: 但是,使用交换服务运行时,它将返回401未经授权的错误:

System.setProperty("javax.net.ssl.trustStore", "truststore.jks");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
KeyStore trustStore = KeyStore.getInstance("JKS");
trustStore.load(new FileInputStream("truststore.jks"),null);
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trustStore);

SSLContext ctx = SSLContext.getInstance("SSL");
ctx.init(null, trustManagerFactory.getTrustManagers(), null);

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.setTraceEnabled(true);
service.setPreAuthenticate(true);
ExchangeCredentials credentials = new WebCredentials(username,password,domain);
service.setCredentials(credentials);
service.setUserAgent(user);
service.setUrl(new java.net.URI("https://autodiscover.company.com/xxxx/autodiscover.svc"));

Following is the stack trace: 以下是堆栈跟踪:

microsoft.exchange.webservices.data.HttpErrorException: The remote server returned an error: (401)Unauthorize
at microsoft.exchange.webservices.data.ServiceRequestBase.validateAndEmitRequest(ServiceRequestBase.java:729)
    at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:36)
    at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:140)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:945)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:998)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:1070)

please suggest. 请提出建议。

将ews-java-api jar版本更改为2.0,就可以了:-)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 WEBDAV java库连接Exchange Server 2007 - WEBDAV java library to connect Exchange server 2007 使用JavaMail在IMAP处于活动状态时连接到Exchange服务器 - Using JavaMail to connect to an Exchange server with IMAP active Java使用MS Exchange服务器发送电子邮件 - java sending email using Ms exchange server EWS Java 1.2-无法连接到公司Exchange Server - EWS Java 1.2 - Unable to connect to company Exchange Server Exchange Web服务(EWS)或JavaMail Api连接到Outlook Exchange Server-Java - Exchange Web Services (EWS) or JavaMail Api to connect to Outlook Exchange Server - Java 无法使用Java邮件通过Exchange服务器发送邮件? - unable to send mails through exchange server using java mail? 使用Java从Microsoft Mail Exchange服务器读取带有附件的邮件 - Read mails with attachments from Microsoft mail Exchange server using Java 使用Core JAVA中的ews-java-api-2.0.jar连接到Office365 Exchange Server - Connect to Office365 Exchange Server with ews-java-api-2.0.jar in Core JAVA 如何使用Java查找Exchange服务器版本? - How can I find Exchange server version using Java? 通过使用Exchange Web Services Api 2.0和Java在Exchange Server中添加约会 - Add an appointment in Exchange Server by using Exchange Web Services Api 2.0 and Java
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM