使用Exchange Web服务访问Exchange日历

时间:2015-11-25 16:04:26

标签: ios objective-c calendar exchange-server exchangewebservices

我想构建一个客户端,我可以在其中显示给定Exchange Calendar中的事件。

我读到了ActiveSyncExchange Web Services,显然Exchange Web Services是访问日历的方式,但是,我找不到任何关于如何获取数据的文档(即如何使用Exchange服务器进行身份验证,如何检索数据(通过HTTP POST请求?),等等。

我是在正确的轨道上还是我错过了用于访问Exchange日历的其他API?我希望,如果我不必使用Apple's Event Kit,那么这将要求用户首先将他的帐户与iOS设备同步。

2 个答案:

答案 0 :(得分:0)

EWS是最佳选择。您可以阅读任何用户的日历(假设您具有凭据或模拟权限),并且还可以在日历更改时订阅通知。可以从.NET应用程序,Java和其他语言访问EWS。当然,最简单的方法是使用C#和EWS Managed API,但Windows世界之外还有很多其他选择。您可以启动here,但您可能希望搜索特定的技术。那里有很多信息。

答案 1 :(得分:0)

在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();
     }
    }

我可以获得所有会议日程。