【问题标题】:Connect to Exchange Server using Autodiscover in Java使用 Java 中的自动发现连接到 Exchange Server
【发布时间】:2017-01-26 02:23:24
【问题描述】:

我们正在尝试使用自动发现 url 连接到我们的交换服务器。使用 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));

但使用交换服务运行时返回 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"));

以下是堆栈跟踪:

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)

请提出建议。

【问题讨论】:

    标签: java exchange-server


    【解决方案1】:

    将 ews-java-api jar 版本更改为 2.0 并成功了 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2019-12-02
      相关资源
      最近更新 更多