如何验证EWS Java API [英] How to authenticate EWS Java API

查看:119
本文介绍了如何验证EWS Java API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在使用EWS Java API在我们的Java应用程序上使用outlook日历。我在EWS上遇到了身份验证问题。

We are using EWS Java API to use the outlook calendar on our Java application. I am having authentication issues on EWS.

我尝试使用rackspace提供的应用程序,并且一切正常,所以我知道凭据是准确的。

I tried the application on the cloud outlook account that's supplied by rackspace and everything worked just fine so I know the credentials are accurate.

以下是代码:

import java.net.URI;
import java.net.URISyntaxException;
import microsoft.exchange.webservices.data.*;

public class TestClass {

    public static void main(String[] args) {
        TestClass obj = new TestClass();
        obj.testMethod();
    }

    public void testMethod() {
        ExchangeService service = new ExchangeService(
                ExchangeVersion.Exchange2007_SP1);
        ExchangeCredentials credentials = new WebCredentials("username",
                "password");

        service.setCredentials(credentials);

        try {
            service.setUrl(new URI("https://domain/EWS/Exchange.asmx"));
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

        EmailMessage msg;
        try {
            msg = new EmailMessage(service);
            msg.setSubject("hello world");
            msg.setBody(MessageBody
                    .getMessageBodyFromText("Sent using the EWS API"));
            msg.getToRecipients().add("test@test.com");
            msg.send();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

rackspace的网址是: https://connect.emailsrvr.com/EWS/Exchange.asmx
当我输入此帐户的用户名和密码时它有效,我看到控制台吐出这个:

The url for rackspace is:https://connect.emailsrvr.com/EWS/Exchange.asmx When I put the username and password for this account and it works, I see the console spitting out this one:

Apr 05, 2013 1:40:28 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: NTLM authentication scheme selected

我们的客户正在使用ExchangeVersion.Exchange2007_SP1,而Rackspace正在使用ExchangeVersion.Exchange2010但是当我使用客户端提供的凭据(用户名,密码和URL)时,我收到此错误:

Our client is using ExchangeVersion.Exchange2007_SP1 whereas Rackspace is using ExchangeVersion.Exchange2010 But when I use the credentials(username, password and url) that our client provided, I am getting this error:

Apr 05, 2013 1:49:13 PM org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: Basic authentication scheme selected
Apr 05, 2013 1:49:13 PM org.apache.commons.httpclient.HttpMethodDirector processAuthenticationResponse
SEVERE: Invalid challenge: Basic
org.apache.commons.httpclient.auth.MalformedChallengeException: Invalid challenge: Basic
at org.apache.commons.httpclient.auth.AuthChallengeParser.extractParams(AuthChallengeParser.java:98)
at org.apache.commons.httpclient.auth.RFC2617Scheme.processChallenge(RFC2617Scheme.java:94)
at org.apache.commons.httpclient.auth.BasicScheme.processChallenge(BasicScheme.java:112)
at org.apache.commons.httpclient.auth.AuthChallengeProcessor.processChallenge(AuthChallengeProcessor.java:162)
at org.apache.commons.httpclient.HttpMethodDirector.processWWWAuthChallenge(HttpMethodDirector.java:694)
at org.apache.commons.httpclient.HttpMethodDirector.processAuthenticationResponse(HttpMethodDirector.java:668)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:193)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at microsoft.exchange.webservices.data.HttpClientWebRequest.executeRequest(HttpClientWebRequest.java:358)
at microsoft.exchange.webservices.data.ServiceRequestBase.getEwsHttpWebResponse(ServiceRequestBase.java:930)
at microsoft.exchange.webservices.data.ServiceRequestBase.validateAndEmitRequest(ServiceRequestBase.java:825)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:46)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:144)
at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(ExchangeService.java:464)
at microsoft.exchange.webservices.data.ExchangeService.createItem(ExchangeService.java:535)
at microsoft.exchange.webservices.data.Item.internalCreate(Item.java:215)
at microsoft.exchange.webservices.data.EmailMessage.internalSend(EmailMessage.java:125)
at microsoft.exchange.webservices.data.EmailMessage.send(EmailMessage.java:253)
at com.aurora.trials.TestClass.testMethod(TestClass.java:43)
at com.aurora.trials.TestClass.main(TestClass.java:17)

microsoft.exchange.webservices.data.EWSHttpException: Connection not established
at microsoft.exchange.webservices.data.HttpClientWebRequest.throwIfConnIsNull(HttpClientWebRequest.java:394)
at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseHeaders(HttpClientWebRequest.java:280)
at microsoft.exchange.webservices.data.ExchangeServiceBase.processHttpResponseHeaders(ExchangeServiceBase.java:1045)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:58)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:144)
at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(ExchangeService.java:464)
at microsoft.exchange.webservices.data.ExchangeService.createItem(ExchangeService.java:535)
at microsoft.exchange.webservices.data.Item.internalCreate(Item.java:215)
at microsoft.exchange.webservices.data.EmailMessage.internalSend(EmailMessage.java:125)
at microsoft.exchange.webservices.data.EmailMessage.send(EmailMessage.java:253)
at com.aurora.trials.TestClass.testMethod(TestClass.java:43)
at com.aurora.trials.TestClass.main(TestClass.java:17)

我找不到任何解决这个问题的方法。请提供您认为我可以通过EWS验证的任何信息。导致这些例外的原因是什么?

I couldn't find any solution for this issue. Please provide any info that you think I can get authenticated for EWS. What is causing these Exceptions?

推荐答案

我有完全相同的错误,浪费了5个小时试图解决它。我的结论是,您不应该浪费更多时间来尝试使EWS代码库工作,EWS代码很混乱,您必须深入了解该库中的错误。

I had your exact same errors and wasted 5 hours trying to fix it. My conclusion is that you should not waste more time on trying to get the EWS codebase to work, the EWS code is confused and you'll have to go in under the hood to fix bugs in that library.

我决定使用javax.mail实现,它可以满足我的需求。
https://stackoverflow.com/a/18043717/445131

I settled on using javax.mail implementation which does what I need. https://stackoverflow.com/a/18043717/445131

这篇关于如何验证EWS Java API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆