9

Estoy tratando de utilizar la API de EWS v1.1.5 Java (http://archive.msdn.microsoft.com/ewsjavaapi) en una aplicación para Android, y se han encontrado con una serie de cuestiones. Descargué la fuente y seguí las instrucciones proporcionadas para compilar la API EWS Java en Eclipse. En esas instrucciones se le indica que descargar y añadir los siguientes pre-requiste dependencias archivo JAR:Problemas al utilizar la API de Java en Android EWS

  • commons-codec-1.4.jar
  • Commons-httpclient-3.1.jar
  • Commons-logging- 1.1.1.jar
  • JCIFS-1.3.15.jar

me hicieron esto, y siguieron las instrucciones de construcción producidos con los siguientes archivos jar:

  • EWSAPI-1.1.0.jar
  • EWSAPIWithJars-1.1.0

A continuación, construye una nueva aplicación para Android, añade los permisos apropiados para el manifiesto, y después se añadió a la siguiente fuente OnCreate de la actividad primaria:

ExchangeService service = new ExchangeService(); 
ExchangeCredentials credentials = new WebCredentials("emailaddress", "password");  
service.setCredentials(credentials); 

try 
{ 
    service.autodiscoverUrl("emailaddress", this); 
} 
catch (Exception e) 
{  
    e.printStackTrace(); 
} 

primera vez que trató de ejecutar esta aplicación con el archivo EWSAPI-1.1.0.jar como dependencia. Cuando lo hice, obtuve el siguiente error fatal:

Uncaught handler: thread main exiting due to uncaught exception java.lang.NoClassDefFoundError: org.apache.commons.httpclient.MultiThreadedHttpConnectionManager at microsoft.exchange.webservices.data.ExchangeServiceBase.(Unknown Source) at microsoft.exchange.webservices.data.ExchangeServiceBase.(Unknown Source) at microsoft.exchange.webservices.data.ExchangeService.(Unknown Source) at com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:40)

Por lo que he investigado, parece que se está generando este error porque Android viene con el Apache HttpClient 4.0, que no aparece a tener la clase MultiThreadedHttpConnectionManager más.

Si me quito el lugar EWSAPI-1.1.0.jar, y en lugar de utilizar el archivo EWSAPIWithJARS-1.1.0.jar como dependencia, me sale el siguiente error:

VFY: unable to resolve static method 908: Ljavax/xml/stream/XMLOutputFactory; newInstance()Ljavax/xml/stream/XMLOutputFactory; VFY: dead code 0x0008-006a in L microsoft/exchange/webservices/data/EwsUtilities;.formatLogMessage (Ljava/lang/String;Ljava/lang/String;) Ljava/lang/String; VFY: unable to find class referenced in signature (Ljavax/xml/stream/XMLStreamWriter;)

Y luego con el tiempo. ..

FATAL EXCEPTION: main java.lang.VerifyError: microsoft.exchange.webservices.data.AutodiscoverService at microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl(Unknown Source) at microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl(Unknown Source) at com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:41)

estoy asumiendo porque ahora estoy incluyendo el frasco HttpClient 3.1 y que está en conflicto con el tarro de HttpClient 4.0 incluido con las bibliotecas Android.

Mi pregunta es si hay una manera para que yo use la API de EWS Java en un proyecto de Android sin tener que volver a escribir las partes de ella que hacen referencia a HttpClient 3.1 cosas específicas que ya no están en 4.0.

+5

"Actualización: dejó el trabajo. Encontré una mejor". –

+0

puede dar el enlace donde obtiene las instrucciones de compilación para generar archivos jar. cuales son los 2 archivos jar que se generarán Por favor ayuda ... es urgente para mí – png

Respuesta

0

Esta no es una respuesta útil pero también he estado luchando para ver la API de EWS en las últimas semanas, sin éxito. El principal problema que he encontrado es que hace referencia a muchas de las API javax que no están en Android. Hay un truco que puede encontrar que explica cómo "volver a clasificar" estos pero aún no lo tengo funcionando; Además, DnsClient hace referencia a algunos espacios de nombres que jarsearches solo devuelve para rt.jar, el tiempo de ejecución principal. ¡Y incluir esto en una aplicación de Android sería una locura!

Antes de encontrar la API, intentaba usar KSOAP para comunicarme con EWS, pero nuevamente encontré problemas. Necesita poder hacer NTLM y SSL y no pude encontrar ninguna forma de combinarlos con KSOAP en ningún manera simple.

La API de EWS se ve el camino a seguir (¿por qué reinventar la rueda), pero conseguir que funcione en Android parece muy complicada (si no imposible)

+0

Sí, he seguido el mismo camino tratando de hacer referencia a las API javax, pero he encontrado muchas dificultades para seguir ese mismo artículo. También encontré problemas con NTLM. –

+0

Obtuve una versión NON Ksoap de NTLM y autenticación básica trabajando con Exchange en android, y publiqué un ejemplo aquí: https://github.com/bradparks/Exchange_SOAP_example_using_NTLM_and_BASIC_authentication_from_java_for_desktop_and_android –

7

Puede utilizar la API de servidor Web incorporado de Microsoft para Android de la siguiente pasos,

  1. descarga el código fuente disponible en la URL, http://archive.msdn.microsoft.com/ewsjavaapi EWSJavaAPI_1.1.5.zip

  2. Realice los cambios en la API de arriba para trabajar para JDK 1.4 en Eclipse como anotaciones de anulación remove etc

  3. Descargar código fuente de javax. * Paquete disponible en debajo de la URL, http://www.java2s.com/Code/JarDownload/jsr173/jsr173_1.0_src.jar.zip

  4. Descargar código fuente de stax API disponible en el URL a continuación, http://dist.codehaus.org/stax/distributions/stax-src-1.2.0.zip

  5. Mantenga todas las fuentes bajo el proyecto java en Eclipse sola

  6. Abra el Explorador de proyectos y seleccione el paquete que son comienza con "javax" y cambiar el nombre a nombre de su empresa, por ejemplo: com. Nota: Eclipse pedirá que cambien todos los contextos de nombres y luego haga clic en Aceptar.

  7. Exportar todas las fuentes Java a un solo archivo jar.

  8. Entonces es bueno ir a usar el tarro en la aplicación de Android sin ningún problema.

He utilizado la misma manera explicada anteriormente y funcionó en la aplicación de Android 100% a la perfección.

+0

Después de varias horas de bailar alrededor de todo esto, finalmente logré hacer ¡esta! ¡¡¡GRACIAS!!! –

+1

Estoy intentando lo mismo y no está funcionando. Hice el archivo jar y lo agregué al proyecto de Android. Pero cuando trato de acceder a cualquiera de las clases de esta biblioteca, obtengo una excepción de clase desconocida. Por favor ayuda . – png

+4

si alguien hizo esto, ¿por qué no lo publican en un repositorio de Github en alguna parte para que todos puedan beneficiarse? –

0

Consulte this biblioteca para la solución

Cuestiones relacionadas