我正在使用EWS java api来获取保留的用户列表。我从https://outlook.office365.com/EWS/Services.wsdl下载了wsdl文件 并生成所需的类。我的目标是以下服务,来自wsdl:
<wsdl:message name="GetHoldOnMailboxesSoapIn">
<wsdl:part name="request" element="tns:GetHoldOnMailboxes"/>
<wsdl:part name="RequestVersion" element="t:RequestServerVersion"/>
<wsdl:part name="ManagementRole" element="t:ManagementRole"/>
</wsdl:message>
<wsdl:message name="GetHoldOnMailboxesSoapOut">
<wsdl:part name="GetHoldOnMailboxesResult" element="tns:GetHoldOnMailboxesResponse"/>
<wsdl:part name="ServerVersion" element="t:ServerVersionInfo"/>
</wsdl:message>
以下是我用于生成列表的代码:
import java.util.Iterator;
import java.util.List;
import microsoft.exchange.webservices.data.autodiscover.IAutodiscoverRedirectionUrl;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import microsoft.exchange.webservices.data.enumeration.ExchangeVersion;
import com.microsoft.schemas.exchange.services._2006.messages.GetActivityLogResponseMessageType;
import com.microsoft.schemas.exchange.services._2006.messages.GetDiscoverySearchConfigurationResponseMessageType;
import com.microsoft.schemas.exchange.services._2006.messages.GetDiscoverySearchConfigurationType;
import com.microsoft.schemas.exchange.services._2006.messages.GetHoldOnMailboxesResponseMessageType;
import com.microsoft.schemas.exchange.services._2006.messages.GetHoldOnMailboxesType;
import com.microsoft.schemas.exchange.services._2006.messages.ObjectFactory;
import com.microsoft.schemas.exchange.services._2006.types.ArrayOfMailboxHoldStatusType;
import com.microsoft.schemas.exchange.services._2006.types.MailboxHoldStatusType;
//import ews.RedirectionUrlCallback;
public class InPlace {
@SuppressWarnings("resource")
public static void main(String[] args) {
GetDiscoverySearchConfigurationType gt = new GetDiscoverySearchConfigurationType();
ExchangeService service = null;
service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
ExchangeCredentials credentials = new WebCredentials(
"XXXXXXx", "password");
service.setCredentials(credentials);
/*
* Some additional code
*/
ObjectFactory objc = new ObjectFactory();
GetHoldOnMailboxesResponseMessageType gmt = objc.createGetHoldOnMailboxesResponseMessageType();
ArrayOfMailboxHoldStatusType arm = gmt.getMailboxHoldResult().getMailboxHoldStatuses();
List ar = arm.getMailboxHoldStatus();
Iterator it = ar.iterator();
while(it.hasNext()){
MailboxHoldStatusType mst = (MailboxHoldStatusType)it.next();
System.out.println(mst.getMailbox());
}
}
}
class RedirectionUrlCallback1 implements IAutodiscoverRedirectionUrl {
public boolean autodiscoverRedirectionUrlValidationCallback(
String redirectionUrl) {
return redirectionUrl.toLowerCase().startsWith("https://");
}
}
我知道,我在代码中遗漏了一些内容,我将不得不将服务对象与api类挂钩。请,建议我缺少什么,或者我是否完全走错了路。
答案 0 :(得分:1)
如果您要使用代理代码,则需要使用ExchangeServiceBinding类来调用该操作,例如
ExchangeServiceBinding esb = new ExchangeServiceBinding();
esb.RequestServerVersionValue = new RequestServerVersion();
esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2013_SP1;
esb.Url = "https://outlook.office365.com/EWS/Exchange.asmx";
esb.Credentials = new NetworkCredential("username", "password");
esb.CookieContainer = new CookieContainer();
GetHoldOnMailboxesType ghold = new GetHoldOnMailboxesType();
ghold.HoldId = "HoldId2";
GetHoldOnMailboxesResponseMessageType gholdRespons = esb.GetHoldOnMailboxes(ghold);
if (gholdRespons.ResponseClass == ResponseClassType.Success)
{
Console.WriteLine(gholdRespons.MailboxHoldResult.HoldId);
}
干杯 格伦