5

मैं EWS जावा एपीआई 1.1.5 उपयोग कर रहा हूँ और मैं इनबॉक्स फ़ोल्डर में सेवा बाध्य करने के लिए इस प्रकार है कोशिश कर रहा हूँ:हो रही NullPointerException कॉमन्स-httpclient और EWSJavaAPI

ExchangeService service = new ExchangeService(); 
     ExchangeCredentials credentials = new WebCredentials(email, password); 
     service.setCredentials(credentials); 
     service.setUrl(new java.net.URI("https://" + host 
       + "/EWS/Exchange.asmx")); 
Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox); 

मैं से ऊपर कोड फोन जेएसपी पेज। मैं कॉमन्स-httpclient 3.1 उपयोग कर रहा हूँ

java.lang.NullPointerException 
    at org.apache.commons.httpclient.HttpMethodBase.getStatusCode(HttpMethodBase.java:570) 
    at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseCode(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.Folder.bind(Unknown Source) 
    at microsoft.exchange.webservices.data.Folder.bind(Unknown Source) 
    at com.xeno.phonesuite.web.Mail.Mail.readInbox(Mail.java:49) 
    at org.apache.jsp.mail.inbox_jsp._jspService(inbox_jsp.java:79) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

:

लेकिन मैं NullPointerException हो रही है।

यह अपवाद होता है जब टॉमकैट 7 पर चलने वाली किसी वेब प्रोजेक्ट से कोड चलाते समय, लेकिन डेस्कटॉप एप्लिकेशन से कोड चलाते समय यह ठीक काम करता है।

अद्यतन:

1- httpclient अपवाद से पहले डिबग करता है:

2012-11-07/16:37:32.425 [http-bio-8080-exec-2] DEBUG Set parameter http.auth.scheme-priority = [NTLM, Basic, Digest] 
2012-11-07/16:37:32.425 [http-bio-8080-exec-2] DEBUG enter HttpState.setCredentials(AuthScope, Credentials) 
2012-11-07/16:37:32.425 [http-bio-8080-exec-2] DEBUG Set parameter http.socket.timeout = 100000 
2012-11-07/16:37:32.425 [http-bio-8080-exec-2] DEBUG Set parameter http.connection.timeout = 100000 
2012-11-07/16:37:32.425 [http-bio-8080-exec-2] DEBUG enter PostMethod.clearRequestBody() 
2012-11-07/16:37:32.425 [http-bio-8080-exec-2] DEBUG enter EntityEnclosingMethod.clearRequestBody() 

2- EWS ट्रेस अपवाद से पहले:

<Trace Tag="EwsRequestHttpHeaders" Tid="33" Time="2012-11-07 15:14:24Z"> 
POST /EWS/Exchange.asmx HTTP/1.1 
Content-type : text/xml; charset=utf-8 
Accept-Encoding : gzip,deflate 
Keep-Alive : 300 
User-Agent : ExchangeServicesClient/0.0.0.0 
Connection : Keep-Alive 
Accept : text/xml 


</Trace> 

और उसके निम्नलिखित तो भेजने के लिए चाहिए अनुरोध:

<Trace Tag="EwsRequest" Tid="1" Time="2012-11-07 15:18:19Z"> 
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><soap:Header><t:RequestServerVersion Version="Exchange2010_SP1"></t:RequestServerVersion></soap:Header><soap:Body><m:FindItem Traversal="Shallow"><m:ItemShape><t:BaseShape>AllProperties</t:BaseShape></m:ItemShape><m:IndexedPageItemView MaxEntriesReturned="5" Offset="0" BasePoint="Beginning"></m:IndexedPageItemView><m:ParentFolderIds><t:DistinguishedFolderId Id="inbox"></t:DistinguishedFolderId></m:ParentFolderIds></m:FindItem></soap:Body></soap:Envelope> 
</Trace> 

लेकिन यह नहीं करता है, और इसके बजाय अपवाद फेंकता है।

UPDATE2: आईपी फोन से निपटने के लिए है कि मैं सिस्को jtapi उपयोग कर रहा हूँ 6.1 पुस्तकालय उल्लेख करना भूल गया, और googling के बाद मैंने पाया कि निम्न समस्या jtapi के नवीनतम संस्करण में हल हो गई है:

CSCtz31973 : Ews request printed is Null in case of StreamingSubscriptionRequest 

क्या मैं समझता हूं कि ईडब्ल्यूएस अनुरोध शून्य है (माइक्रोसॉफ्ट वेब सर्विसेज अनुरोध नहीं भेज सकता है), इसलिए मैं jtapi लाइब्रेरी अपडेट करूँगा और इसे आज़मा दूंगा।

कृपया इसे ठीक करने का सुझाव दें।

+0

एनपी जब geting statusCode मेरे लिए होगा संकेत मिलता है कि वहाँ कुछ प्रतिक्रिया के साथ गलत है। उदाहरण के लिए http का प्रयास करने का यह विकल्प है? –

+0

@Aksel Willgert, त्रुटि का पता लगाने या इसे हल करने के लिए कैसे? –

+0

डीबग करने के लिए httpclient के लिए लॉग स्तर सेट करें और देखें कि यह कुछ रोचक प्रिंट करता है या नहीं। –

उत्तर

4

समस्या jaxws-आरटी और Saaj-api के लिए जार के उन्नयन के रूप में इस के बाद हल:

<dependency> 
     <groupId>com.sun.xml.ws</groupId> 
     <artifactId>jaxws-rt</artifactId> 
     <version>2.2.7</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.xml.soap</groupId> 
     <artifactId>saaj-api</artifactId> 
     <version>1.3.4</version> 
    </dependency> 
+0

मैं वही कर रहा हूं लेकिन एंड्रॉइड (जावा) में, इसलिए मेरे पास इन दो निर्भरताओं को अपडेट करने का कोई तरीका नहीं है। कोई मदद? – Darpan

+0

मैन्युअल रूप से इन जार डाउनलोड करने का प्रयास करें –