【问题标题】:Access Exchange Calendar with Exchange Web Services使用 Exchange Web 服务访问 Exchange 日历
【发布时间】:2016-01-29 22:35:51
【问题描述】:
我想构建一个客户端,我可以在其中显示给定 Exchange Calendar 中的事件。
我读到了 ActiveSync 和 Exchange Web Services,显然 Exchange Web Services 是访问日历的方法,但是,我找不到任何关于如何获取数据的文档(即如何通过 Exchange 进行身份验证)服务器,如何检索数据(通过 HTTP POST 请求?)等等)。
我是在正确的轨道上还是我错过了用于访问 Exchange 日历的不同 API?如果我不必使用Apple's Event Kit,我会更喜欢,因为这需要用户先将他的帐户与 iOS 设备同步。
【问题讨论】:
标签:
ios
objective-c
calendar
exchange-server
exchangewebservices
【解决方案1】:
EWS 是必经之路。您可以阅读任何用户的日历(假设您具有凭据或模拟权限),还可以在日历更改时订阅通知。可以从 .NET 应用程序、Java 和其他语言访问 EWS。当然,最简单的方法是使用 C# 和 EWS 托管 API,但在 Windows 世界之外还有很多替代方案。您可以开始here,但您可能想要搜索您的特定技术。那里有很多信息。
【解决方案2】:
在 JAVA EWS api 中,我使用了以下代码:
public static void getAllMeetings() throws Exception {
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = formatter.parse("2016-01-01 00:00:00");
SearchFilter filter = new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.LastModifiedTime,startDate);
FindItemsResults<Item> findResults = service.findItems(WellKnownFolderName.Calendar, filter, new ItemView(1000));
System.out.println("|------------------> meetings count = " + findResults.getTotalCount());
for (Item item : findResults.getItems())
{
Appointment appt = (Appointment)item;
//appt.setStartTimeZone();
System.out.println("TimeZone====="+appt.getTimeZone());
System.out.println("SUBJECT====="+appt.getSubject());
System.out.println("Location========"+appt.getLocation());
System.out.println("Start Time========"+appt.getStart());
System.out.println("End Time========"+appt.getEnd());
System.out.println("Email Address========"+ appt.getOrganizer().getAddress());
System.out.println("Last Modified Time========"+appt.getLastModifiedTime());
System.out.println("Last Modified Time========"+appt.getLastModifiedName());
System.out.println("*************************************************\n");
}
} catch (Exception exp) {
exp.printStackTrace();
}
}
我可以获得所有会议日程。