【问题标题】:Problems using the EWS Java API on Android在 Android 上使用 EWS Java API 的问题
【发布时间】:2012-03-01 11:08:00
【问题描述】:

我正在尝试在 Android 应用程序中使用 EWS Java API v1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi),但遇到了许多问题。 我下载了源代码,并按照提供的说明在 Eclipse 中编译 EWS Java API。在这些说明中,您被告知下载并 添加以下前置 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 应用程序,将适当的权限添加到清单中,然后将以下源添加到主 Activity 的 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:L 中的死代码 0x0008-006a microsoft/exchange/webservices/data/EwsUtilities;.formatLogMessage (Ljava/lang/String;Ljava/lang/String;) Ljava/lang/String; VFY: 找不到签名中引用的类 (Ljavax/xml/stream/XMLStreamWriter;)

然后最终......

致命异常:主要 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 jar,它与 Android 库中包含的 HttpClient 4.0 jar 冲突。

我的问题是我是否有办法在 Android 项目中使用 EWS Java API 而无需重新编写其中引用的部分 HttpClient 3.1 特有的东西,4.0 中不再存在。

【问题讨论】:

  • “更新:辞职。找到了一份更好的工作。”
  • 能否请您提供获取生成 jar 文件的构建说明的链接。这是要生成的2个jar文件。请帮助..这对我来说很紧急

标签: android exchangewebservices apache-commons-httpclient ewsjavaapi


【解决方案1】:

请查看this库以获取解决方案

【讨论】:

    【解决方案2】:

    您可以通过执行以下步骤来使用 microsoft 的 EWS api for android,

    1. 下载网址中提供的源代码, http://archive.msdn.microsoft.com/ewsjavaapi EWSJavaAPI_1.1.5.zip

    2. 对上述 api 进行更改以在 Eclipse 中适用于 JDK 1.4,例如删除覆盖注释等

    3. 在下面的 URL 中下载 javax.* 包的源代码, http://www.java2s.com/Code/JarDownload/jsr173/jsr173_1.0_src.jar.zip

    4. 在以下 URL 下载 stax api 的源代码, http://dist.codehaus.org/stax/distributions/stax-src-1.2.0.zip

    5. 将所有源码保存在eclipse中的单个java项目下

    6. 打开项目浏览器,选择以“javax”开头的包,并重命名为您的公司名称,例如:com注意: Eclipse 将要求所有的命名上下文都将更改,然后单击“确定”。

    7. 将所有 java 源导出到一个 jar 文件。

    8. 那么您可以在 Android 应用程序中使用该 jar,没有任何问题。

    我使用了上面解释的相同方式,它在 android 应用程序中 100% 完美运行。

    【讨论】:

    • 在围绕所有这些东西跳舞几个小时后,我终于做到了!谢谢!!!
    • 我也在尝试,但它不起作用。我制作了jar文件并将其添加到android项目中。但是当我尝试从这个库访问任何类时,我得到了 classdefnotfound 异常。请帮忙。
    • 如果有人这样做了,他们为什么不将其发布到某个地方的 github 存储库,以便所有人都能受益?
    • 嘿@preetha 你让它工作了吗?甚至我也遇到了同样的错误。
    【解决方案3】:

    这不是一个有用的答案,但过去几周我也一直在努力查看 EWS API,但没有成功。 我发现的主要问题是它引用了很多不在 Android 上的 javax API。您可以找到一个 hack,它解释了如何“重新分类”这些,但我还没有让它工作;此外,DnsClient 引用了一些 jarsearches 只为 rt.jar(主运行时)返回的命名空间。将它包含在 Android 应用中简直太疯狂了!

    在找到 API 之前,我曾尝试使用 KSOAP 与 EWS 进行通信,但又遇到了问题 - 您需要能够执行 NTLM 和 SSL,而我找不到任何简单的方法将所有这些与 KSOAP 结合起来大大地。

    EWS API 看起来不错(为什么要重新发明轮子),但让它在 Android 上运行看起来非常棘手(如果不是不可能的话)

    【讨论】:

    • 是的,我尝试引用 javax API 的路径相同,但在同一篇文章之后发现了很多困难。我也遇到了 NTLM 的问题。
    • 我有一个 NON Ksoap 版本的 NTLM 和在 Android 上使用 Exchange 的基本身份验证,并在此处发布了一个示例:github.com/bradparks/…
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多