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