Проблемы с использованием EWS Java API на Android

Я пытаюсь использовать EWS Java API v1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi) в приложении для Android и столкнулся с ряд вопросов. Я загрузил исходный код и выполнил инструкции по компиляции Java API EWS в Eclipse. В этих инструкциях вам предлагается загрузить и добавьте следующие необходимые зависимости файлов jar:

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

Я сделал это и, следуя инструкциям по сборке, создал следующие файлы jar:

  • EWSAPI-1.1.0.jar
  • EWSAPIWithJars-1.1.0

Затем я собрал совершенно новый Android приложение, добавил соответствующие разрешения в манифест, а затем добавил следующий источник в OnCreate основного действия:

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

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

Сначала я попытался запустить это приложение с файлом EWSAPI-1.1.0.jar в качестве зависимости. Когда я это сделал, я получил следующую фатальную ошибку:

Неперехваченный обработчик: основной поток завершается из-за неперехваченного исключения. java.lang.NoClassDefFoundError: org.apache.commons.httpclient.MultiThreadedHttpConnectionManager в microsoft.exchange.webservices.data.ExchangeServiceBase. (Неизвестно Источник) в microsoft.exchange.webservices.data.ExchangeServiceBase. (Неизвестно Источник) в microsoft.exchange.webservices.data.ExchangeService. (Неизвестно Источник) в com.meshin.exchange.ExchangeDiscoveryActivity.onCreate (ExchangeDiscoveryActivity.java:40)

Из того, что я исследовал, похоже, что эта ошибка возникает из-за того, что Android поставляется с Apache HttpClient 4.0, который не отображается чтобы больше не иметь класса MultiThreadedHttpConnectionManager.

Если я вместо этого удаляю EWSAPI-1.1.0.jar и вместо этого использую файл EWSAPIWithJARS-1.1.0.jar в качестве зависимости, я получаю следующую ошибку:

VFY: невозможно разрешить статический метод 908: Ljavax / xml / stream / XMLOutputFactory; newInstance () Ljavax / xml / stream / XMLOutputFactory; VFY: мертвый код 0x0008-006a в L Microsoft / Exchange / webservices / data / EwsUtilities; .formatLogMessage (Ljava / lang / String; Ljava / lang / String;) Ljava / lang / String; VFY: невозможно найти класс, на который есть ссылка в сигнатуре (Ljavax / xml / stream / XMLStreamWriter;)

И затем, в конце концов ...

ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: main java.lang.VerifyError: microsoft.exchange.webservices.data.AutodiscoverService в microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl (Неизвестно Источник) в microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl (Неизвестно Источник) в com.meshin.exchange.ExchangeDiscoveryActivity.onCreate (ExchangeDiscoveryActivity.java:41)

Я предполагаю, потому что теперь я включаю банку HttpClient 3.1, и она конфликтует с банкой HttpClient 4.0, включенной в библиотеки Android.

У меня вопрос: есть ли способ использовать API EWS Java в проекте Android без необходимости переписывать его части, которые ссылаются на Специфичные для HttpClient 3.1 вещи, которых больше нет в 4.0.

9
задан JasonMArcher 11 July 2014 в 19:44
поделиться