2013-04-05 4 views
8

प्रमाणित करने के लिए कैसे हम अपने जावा एप्लिकेशन पर दृष्टिकोण कैलेंडर का उपयोग करने के लिए ईडब्ल्यूएस जावा एपीआई का उपयोग कर रहे हैं। मुझे ईडब्ल्यूएस पर प्रमाणीकरण के मुद्दे हैं।ईडब्ल्यूएस जावा एपीआई

मैंने क्लाउड आउटलुक खाते पर एप्लिकेशन की कोशिश की जो रैकस्पेस द्वारा प्रदान की गई है और सबकुछ ठीक काम करता है इसलिए मुझे पता है कि प्रमाण पत्र सटीक हैं।

यहाँ कोड है:

import java.net.URI; 
import java.net.URISyntaxException; 
import microsoft.exchange.webservices.data.*; 

public class TestClass { 

    public static void main(String[] args) { 
     TestClass obj = new TestClass(); 
     obj.testMethod(); 
    } 

    public void testMethod() { 
     ExchangeService service = new ExchangeService(
       ExchangeVersion.Exchange2007_SP1); 
     ExchangeCredentials credentials = new WebCredentials("username", 
       "password"); 

     service.setCredentials(credentials); 

     try { 
      service.setUrl(new URI("https://domain/EWS/Exchange.asmx")); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } 

     EmailMessage msg; 
     try { 
      msg = new EmailMessage(service); 
      msg.setSubject("hello world"); 
      msg.setBody(MessageBody 
        .getMessageBodyFromText("Sent using the EWS API")); 
      msg.getToRecipients().add("[email protected]"); 
      msg.send(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

} 

रैकस्पेस के लिए यूआरएल है: https://connect.emailsrvr.com/EWS/Exchange.asmx जब मैं इस खाते के लिए उपयोगकर्ता नाम और पासवर्ड डाल दिया और यह काम करता है, मैं सांत्वना थूकना बाहर देखने के इस एक:

Apr 05, 2013 1:40:28 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme 
INFO: NTLM authentication scheme selected 

हमारा क्लाइंट ExchangeVersion.Exchange2007_SP1 का उपयोग कर रहा है जबकि रैकस्पेस ExchangeVersion.Exchange2010 का उपयोग कर रहा है, लेकिन जब मैं हमारे क्लाइंट प्रदान किए गए प्रमाण-पत्र (उपयोगकर्ता नाम, पासवर्ड और यूआरएल) का उपयोग करता हूं, तो मुझे यह त्रुटि मिल रही है:

Apr 05, 2013 1:49:13 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme 
INFO: Basic authentication scheme selected 
Apr 05, 2013 1:49:13 PM org.apache.commons.httpclient.HttpMethodDirector processAuthenticationResponse 
SEVERE: Invalid challenge: Basic 
org.apache.commons.httpclient.auth.MalformedChallengeException: Invalid challenge: Basic 
at org.apache.commons.httpclient.auth.AuthChallengeParser.extractParams(AuthChallengeParser.java:98) 
at org.apache.commons.httpclient.auth.RFC2617Scheme.processChallenge(RFC2617Scheme.java:94) 
at org.apache.commons.httpclient.auth.BasicScheme.processChallenge(BasicScheme.java:112) 
at org.apache.commons.httpclient.auth.AuthChallengeProcessor.processChallenge(AuthChallengeProcessor.java:162) 
at org.apache.commons.httpclient.HttpMethodDirector.processWWWAuthChallenge(HttpMethodDirector.java:694) 
at org.apache.commons.httpclient.HttpMethodDirector.processAuthenticationResponse(HttpMethodDirector.java:668) 
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:193) 
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(HttpClientWebRequest.java:358) 
at microsoft.exchange.webservices.data.ServiceRequestBase.getEwsHttpWebResponse(ServiceRequestBase.java:930) 
at microsoft.exchange.webservices.data.ServiceRequestBase.validateAndEmitRequest(ServiceRequestBase.java:825) 
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:46) 
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:144) 
at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(ExchangeService.java:464) 
at microsoft.exchange.webservices.data.ExchangeService.createItem(ExchangeService.java:535) 
at microsoft.exchange.webservices.data.Item.internalCreate(Item.java:215) 
at microsoft.exchange.webservices.data.EmailMessage.internalSend(EmailMessage.java:125) 
at microsoft.exchange.webservices.data.EmailMessage.send(EmailMessage.java:253) 
at com.aurora.trials.TestClass.testMethod(TestClass.java:43) 
at com.aurora.trials.TestClass.main(TestClass.java:17) 

microsoft.exchange.webservices.data.EWSHttpException: Connection not established 
at microsoft.exchange.webservices.data.HttpClientWebRequest.throwIfConnIsNull(HttpClientWebRequest.java:394) 
at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseHeaders(HttpClientWebRequest.java:280) 
at microsoft.exchange.webservices.data.ExchangeServiceBase.processHttpResponseHeaders(ExchangeServiceBase.java:1045) 
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:58) 
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:144) 
at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(ExchangeService.java:464) 
at microsoft.exchange.webservices.data.ExchangeService.createItem(ExchangeService.java:535) 
at microsoft.exchange.webservices.data.Item.internalCreate(Item.java:215) 
at microsoft.exchange.webservices.data.EmailMessage.internalSend(EmailMessage.java:125) 
at microsoft.exchange.webservices.data.EmailMessage.send(EmailMessage.java:253) 
at com.aurora.trials.TestClass.testMethod(TestClass.java:43) 
at com.aurora.trials.TestClass.main(TestClass.java:17) 

मुझे इस मुद्दे के लिए कोई समाधान नहीं मिला। कृपया कोई भी जानकारी प्रदान करें जो आपको लगता है कि मैं ईडब्ल्यूएस के लिए प्रमाणित हो सकता हूं। इन अपवादों का कारण क्या है?

+0

रॉक्स स्पेस ईडब्ल्यूएस प्रमाणीकरण के लिए एनटीएलएम का उपयोग कर रहा है, और क्लाइंट बेसिक का उपयोग कर रहा है क्योंकि इसे ग्रहण पर कंसोल आउटपुट से देखा जा सकता है। – leventend

+0

और वे हमारे प्रमाणीकरण को बुनियादी से एनटीएलएम में बदलने के लिए तैयार नहीं हैं। – leventend

+0

उन्होंने आखिरकार मूलभूत से एनटीएलएम प्रमाणीकरण को बदल दिया, और यह अब काम करता है। खैर, कम से कम मैं कैलेंडर में नियुक्तियों को खींच सकता हूं लेकिन मैं उन्हें नहीं बना सकता। हालांकि मैं क्लाउड अकाउंट पर अपॉइंटमेंट्स बना सकता हूं। मैं किसी को किसी तरह से समझूंगा। लेकिन कम से कम मैं सीख रहा था कि मुद्दा कोड नहीं था, यह सर्वर पक्ष प्रमाणीकरण मुद्दा था। – leventend

उत्तर

3

मेरे पास आपकी वही त्रुटियां थीं और इसे ठीक करने की कोशिश करने में 5 घंटे बर्बाद हो गए थे। मेरा निष्कर्ष यह है कि आपको ईडब्लूएस कोडबेस को काम करने की कोशिश करने पर अधिक समय बर्बाद नहीं करना चाहिए, ईडब्ल्यूएस कोड उलझन में है और आपको उस पुस्तकालय में बग को ठीक करने के लिए हुड के नीचे जाना होगा।

मैं javax.mail कार्यान्वयन का उपयोग करने पर बस गया जो मुझे चाहिए। https://stackoverflow.com/a/18043717/445131

संबंधित मुद्दे