2017-01-26 1 views
0

자동 검색 URL을 사용하여 Exchange 서버에 연결하려고합니다. 지내는 클라이언트를 사용하여 실행하는 경우 URL은 WSDL 파일을 반환 :Java에서 Autodiscover를 사용하여 Exchange Server에 연결

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) 

를 제안하십시오.

답변

0

ews-java-api jar 버전을 2.0으로 변경하고 그 트릭을 수행했습니다 :-)