我正在尝试获取用户默认日历Feed的“正常”网址(例如http://www.google.com/calendar/feeds/jo@gmail.com/private/full)。我想使用URL的jo@gmail.com部分作为该日历的唯一ID。
我知道我可以使用网址http://www.google.com/calendar/feeds/default/private/full对默认日历执行操作。但是,我找不到从该URL构建CalendarEntry的方法(然后我可以尝试使用SelfUri和其他一些属性来查看'普通'url是否在某处),或者将其转换为'normal'url无论如何。
我知道我可以像这样得到日历列表:
CalendarQuery query_cal = new CalendarQuery();
query_cal.Uri = new Uri( "http://www.google.com/calendar/feeds/default/allcalendars/full" );
CalendarFeed resultFeed = (CalendarFeed) service.Query( query_cal );
foreach ( CalendarEntry entry in resultFeed.Entries )
{ ... }
但是,我找不到任何方法可以知道哪些条目与默认日历相匹配。
或者以任何其他方式获取默认日历的正常网址。
答案 0 :(得分:3)
这可能不是最好的方法,但我使用它并且它有效:
feedstring = resultfeed.Entries.Item(calendarIndex).Id.AbsoluteUri.Substring(63)
postUristring = "https://www.google.com/calendar/feeds/" & feedstring & "/private/full"
Dim postUri As New Uri(postUristring)
只需使用calendarIndex = 0作为默认日历。不应该太难转换为C#!
答案 1 :(得分:2)
非常感谢你!这很完美!这是我的最终代码:
CalendarQuery query = new CalendarQuery();
query.Uri = new Uri("https://www.google.com/calendar/feeds/default/allcalendars/full");
CalendarFeed resultFeed = (CalendarFeed)service.Query(query);
int calendarIndex = 0;
string postUristring = string.Empty;
foreach (CalendarEntry entry2 in resultFeed.Entries)
{
if (entry2.Title.Text == "My Pregnancy Calendar")
{
string feedstring = resultFeed.Entries[calendarIndex].Id.AbsoluteUri.Substring(63);
postUristring = "https://www.google.com/calendar/feeds/" + feedstring + "/private/full";
}
calendarIndex++;
}