Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上使用EWS Java API时出现的问题_Android_Exchangewebservices_Apache Commons Httpclient_Ewsjavaapi - Fatal编程技术网

在Android上使用EWS Java API时出现的问题

在Android上使用EWS Java API时出现的问题,android,exchangewebservices,apache-commons-httpclient,ewsjavaapi,Android,Exchangewebservices,Apache Commons Httpclient,Ewsjavaapi,我正在尝试使用EWS Java API v1.1.5(http://archive.msdn.microsoft.com/ewsjavaapi)在Android应用程序中,遇到了许多问题。 我下载了源代码,并按照提供的说明在Eclipse中编译EWS Java API。在这些说明中,您被告知下载并 添加以下预先要求的jar文件依赖项: commons-codec-1.4.jar commons-httpclient-3.1.jar commons-logging-1.1.1.jar jcifs

我正在尝试使用EWS Java API v1.1.5(http://archive.msdn.microsoft.com/ewsjavaapi)在Android应用程序中,遇到了许多问题。 我下载了源代码,并按照提供的说明在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应用程序,将适当的权限添加到清单中,然后将以下源添加到主要活动的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附带了ApacheHttpClient 4.0而产生的,而ApacheHttpClient 4.0并没有出现 要继续使用多线程HttpConnectionManager类

如果取而代之的是删除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/EWSUPPILITIES;。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.GetAutoDiscoveryURL(未知) 来源)在 microsoft.exchange.webservices.data.ExchangeService.AutoDiscoveryURL(未知) 来源)在 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中不再存在的特定内容。

这不是一个有用的答案,但在过去几周里,我一直在努力研究EWS API,但没有成功。 我发现的主要问题是它引用了很多不在Android上的javax API。有一个你可以找到的黑客,解释了如何“重新类”这些,但我还没有得到它的工作;此外,DnsClient引用了一些名称空间,JarSearchs只返回rt.jar(主运行时)。而将其包含在Android应用程序中简直是疯了

在找到API之前,我试图使用KSOAP与EWS通信,但再次遇到问题-您需要能够执行NTLM和SSL,我找不到任何方法以任何简单的方式将所有这些与KSOAP结合起来


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

您可以通过执行以下步骤来使用microsoft针对Android的EWS API

  • 下载URL中可用的源代码, EWSJavaAPI_1.1.5.zip

  • 对上述api进行更改,以便在eclipse中适用于JDK1.4,如remove override annotations e.t.c

  • 下载javax.*包的源代码,在下面的URL中提供,

  • 下载stax api的源代码,可从以下URL获得:,

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

  • 打开project explorer并选择以“javax”开头的包,然后重命名为您的公司名称,例如:com。注意:Eclipse将要求更改所有命名上下文,然后单击OK

  • 将所有java源导出到一个jar文件中

  • 然后,您就可以在Android应用程序中使用jar,而不会出现任何问题


  • 我使用了上面解释的相同方法,它在android应用程序中100%完美地工作。

    请查看库中的解决方案

    是的,我尝试引用javax API,但在阅读同一篇文章时发现了很多困难。我也遇到了NTLM的问题。我得到了一个非Ksoap版本的NTLM和android上Exchange的基本身份验证,并在这里发布了一个示例:“更新:放弃了工作。找到了一个更好的工作。”您能否提供一个链接,从中获得生成jar文件的构建说明。这是要生成的2个jar文件。请帮忙。。这对我来说很紧急经过几个小时的跳舞我终于做到了!非常感谢。我正在尝试同样的方法,但它不起作用。我制作了jar文件并将其添加到android项目中。但当我试图从这个库访问任何类时,我得到了ClassDefNotFoundException。请帮忙。如果有人这样做了,为什么他们不把它发布到某个地方的github回购协议上,这样所有人都能从中受益呢?嘿@preetha,是吗