Я пытаюсь использовать EWS Java API v1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi) в приложении для Android и столкнулся с рядом проблем. Я скачал исходный код и следовал инструкциям, приведенным для компиляции EWS Java API в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 в качестве зависимости.сделал это, я получил следующую фатальную ошибкуr:
Необработанный обработчик: выход из основного потока из-за неперехваченного исключения) в 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 / поток / 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.autodiscoverexhin.mes.ExchangeDiscoveryActivity.onCreate (ExchangeDiscoveryActivity.java:41)
Я предполагаю, что теперь я включаю флягу HttpClient 3.1, и она конфликтует с флягой HttpClient 4.0, включенной в библиотеки Android.
У меня вопрос: есть ли способ использовать API Java EWS в проекте Android без необходимости переписывать его части, которые ссылаются на специфичные для HttpClient 3.1 вещи, которых больше нет в 4.0.