您的位置:首页 > 其它

如何使用Exchange Web Service获取日历(包含循环会议)

2013-01-27 08:30 441 查看
本文介绍如何使用EWS代理类调用Exchange的日历

(1)首先生成代理类

ExchangeServiceBinding _ExchangeBinding = new ExchangeServiceBinding();
_ExchangeBinding.Credentials = new NetworkCredential(username, password, domain);
_ExchangeBinding.Url = Helper.GetWebconfig("exchangewebservice");


(2)定义请求的属性

请注意:在定义请求属性时,一定要定义CalendarViewType属性,默认的日历返回是不含循环日历的,

如果需要返回循环会议请求,就需要等译CalendarView

FindItemType findItemRequest = new FindItemType();

ItemResponseShapeType itemProperties = new ItemResponseShapeType();
itemProperties.BaseShape = DefaultShapeNamesType.AllProperties;
findItemRequest.ItemShape = itemProperties;

//我们查找的是日历
DistinguishedFolderIdType[] folderIDs = { new DistinguishedFolderIdType { Id = DistinguishedFolderIdNameType.calendar } };

findItemRequest.ParentFolderIds = folderIDs;

//增加搜索的日历范围,红色代码要饭服务器返回循环会议

CalendarViewType cldview = new CalendarViewType();
cldview.StartDate = dt.AddDays(-2);
cldview.EndDate = dt.AddDays(2);
findItemRequest.Item = cldview;

findItemRequest.Traversal = ItemQueryTraversalType.Shallow;


(3)定义服务器返回的数据属性

FindItemResponseType findItemResponse = _ExchangeBinding.FindItem(findItemRequest);

ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages;
ResponseMessageType[] responseMessage = responseMessages.Items;

foreach (ResponseMessageType rmt in responseMessage)
{
#region 结果

FindItemResponseMessageType msgType = (rmt as FindItemResponseMessageType);

if (msgType.RootFolder == null)
continue;

FindItemParentType parentType = msgType.RootFolder;

object obj = parentType.Item;
if (obj is ArrayOfRealItemsType)
{
ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType);
if (items != null)
{
if (items.Items != null)
{
foreach (ItemType item in items.Items)
{
CalendarItemType calItem = item as CalendarItemType;
DataRow row = table.NewRow();
row["roomid"] = 1;
row["guid"] = guid;
row["begintime"] = calItem.Start.AddHours(timezone);
row["endtime"] = calItem.End.AddHours(timezone);
row["location"] = calItem.Location;
row["title"] = calItem.Subject;
row["displayname"] = calItem.Organizer.Item.Name;
if (row["endtime"].ToString() != "")
{
table.Rows.Add(row);
}
}
}
}

}

#endregion
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐