5

ich bin mit EWS Java API 1.1.5 und ich versuche, den Dienst zu Eingangsordner zu binden, wie folgt:bekommen Nullpointer mit commons-Httpclient und 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); 

i rufen Sie den obigen Code aus jsp Seite.

aber ich bin immer Nullpointer:

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) 

i commons-Httpclient bin mit 3,1.

Diese Ausnahme tritt auf, wenn der Code von einem Webprojekt ausgeführt wird, das auf tomcat 7 ausgeführt wird, aber wenn der Code von der Desktopanwendung ausgeführt wird, funktioniert es einwandfrei.

UPDATE:

1- Httpclient debuggt vor Ausnahme:

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 Spur vor Ausnahme:

<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> 

und sein angenommenes dann senden die folgende Anfrage:

<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> 

aber es tut nicht, und es wirft stattdessen die Ausnahme.

UPDATE2: vergessen zu erwähnen, dass ich für den Umgang mit IP-Telefonen von Cisco JTAPI 6.1 Bibliothek verwenden, und ich fand nach googeln, dass die folgenden Ausgabe in neuester Version von JTAPI behoben ist:

CSCtz31973 : Ews request printed is Null in case of StreamingSubscriptionRequest 

was Ich verstehe, dass die EWS-Anfragen null ist (kann keine Microsoft Webservices-Anfragen senden), also werde ich die jtapi-Bibliothek aktualisieren und es versuchen.

bitte beraten, wie es zu beheben.

+0

np wenn Geting Statuscode, mich zu zeigen, würde es etwas falsch mit der Antwort. Ist es eine Option, http zum Beispiel zu versuchen? –

+0

@Aksel Willgert, wie erkennt man den Fehler oder Workaround? –

+0

Legen Sie die Protokollierungsstufe für httpclient fest, um zu debuggen, und prüfen Sie, ob etwas Interessantes gedruckt wird. –

Antwort

4

Problem gelöst, nachdem die Gläser für jaxws-rt und saaj-api Upgrade wie folgt:

<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

Ich mache das gleiche, aber in Android (Java), also habe ich keine Möglichkeit, diese beiden Abhängigkeiten zu aktualisieren. Irgendeine Hilfe? – Darpan

+0

versuchen Sie, diese Gläser manuell herunterzuladen –