在Android上使用EWS Java API时出现的问题
我正在尝试使用EWS Java API v1.1.5(http://archive.msdn.microsoft.com/ewsjavaapi)在Android应用程序中,遇到了许多问题。 我下载了源代码,并按照提供的说明在Eclipse中编译EWS Java API。在这些说明中,您被告知下载并 添加以下预先要求的jar文件依赖项:在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
- commons-codec-1.4.jar
- commons-httpclient-3.1.jar
- commons-logging-1.1.1.jar
- jcifs-1.3.15.jar
- EWSAPI-1.1.0.jar
- EWSAPIWithJars-1.1.0
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
我使用了上面解释的相同方法,它在android应用程序中100%完美地工作。请查看库中的解决方案是的,我尝试引用javax API,但在阅读同一篇文章时发现了很多困难。我也遇到了NTLM的问题。我得到了一个非Ksoap版本的NTLM和android上Exchange的基本身份验证,并在这里发布了一个示例:“更新:放弃了工作。找到了一个更好的工作。”您能否提供一个链接,从中获得生成jar文件的构建说明。这是要生成的2个jar文件。请帮忙。。这对我来说很紧急经过几个小时的跳舞我终于做到了!非常感谢。我正在尝试同样的方法,但它不起作用。我制作了jar文件并将其添加到android项目中。但当我试图从这个库访问任何类时,我得到了ClassDefNotFoundException。请帮忙。如果有人这样做了,为什么他们不把它发布到某个地方的github回购协议上,这样所有人都能从中受益呢?嘿@preetha,是吗