Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过ID获取单个GoogleCalendar CalendarEventEntry?_Java_Google Calendar Api_Google Apps - Fatal编程技术网

Java 如何通过ID获取单个GoogleCalendar CalendarEventEntry?

Java 如何通过ID获取单个GoogleCalendar CalendarEventEntry?,java,google-calendar-api,google-apps,Java,Google Calendar Api,Google Apps,我试图通过事件ID从Google日历中检索一个事件,但我找不到方法。API似乎没有为此提供方法,尽管它建议使用对提要日历进行查询。这样做的缺点是ID不是考虑的参数之一 我认为实现这一点的一种可能方法是将事件与我们的日历关联,然后按如下方式迭代生成的事件列表: CalendarService service = new CalendarService(applicationName); service.setUserCredentials(userName,password); CalendarE

我试图通过事件ID从Google日历中检索一个事件,但我找不到方法。API似乎没有为此提供方法,尽管它建议使用对提要日历进行查询。这样做的缺点是ID不是考虑的参数之一

我认为实现这一点的一种可能方法是将事件与我们的日历关联,然后按如下方式迭代生成的事件列表:

CalendarService service = new CalendarService(applicationName);
service.setUserCredentials(userName,password);
CalendarEventFeed myFeed = service.getFeed(feedUrl, CalendarEventFeed.class);
List <CalendarEventEntry> entries =  myFeed.getEntries();

for (CalendarEventEntry e : entries){
    if (e.getId().equals(id)){
       return e;
    }
    }
CalendarService=newcalendarservice(applicationName);
service.setUserCredentials(用户名、密码);
CalendarEventFeed myFeed=service.getFeed(feedUrl,CalendarEventFeed.class);
List entries=myFeed.getEntries();
对于(CalendarEventEntry e:entries){
如果(如getId().equals(id)){
返回e;
}
}
你知道有什么更简单、更直接的解决方案可以实现这一点吗


提前谢谢

您可以通过调用
calendarEventEntry.getEditLink().getHref()
获取事件的URL。它实际上是日历的url加上事件id


看看代码示例。

这个问题有根据,没有代码来回答这个问题。下面是我用来回答这个问题的代码。我稍微修改了你的代码

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;
import com.google.gdata.data.*;
import com.google.gdata.data.acl.*;
import com.google.gdata.data.calendar.*;
import com.google.gdata.data.extensions.*;
import com.google.gdata.util.*;

import java.net.*;
import java.io.*;
import java.util.List;


public class GetGoogleCalendarEventByID {

public static void main(String[] args) {

    System.out.println("Before Creating CalendarService.");
    CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
    System.out.println("After Creating CalendarService.");


    try
    {        
        System.out.println("Going to setUserCredentials.");
        myService.setUserCredentials("email@gmail.com", "password");        

        URL feedUrl =
          new URL("https://www.google.com/calendar/feeds/email@gmail.com/private/full");




        CalendarEventFeed myFeed = myService.getFeed(feedUrl, CalendarEventFeed.class);
        List <CalendarEventEntry> entries =  myFeed.getEntries();

        for (CalendarEventEntry e : entries){
            if (e.getId().equalsIgnoreCase("http://www.google.com/calendar/feeds/email%40gmail.com/events/EventIDLastPart")){
               System.out.println("Got the CalendarEventEntry: " + e.getId());
               System.out.println("CalendarEventEntry has text: " + e.getPlainTextContent());
            }
            }              


        System.out.println("Finished getting Event.");        




    }
    catch(Exception e)
    {
      System.out.println("Error : " + e.toString());

    }




}
}
import com.google.gdata.client.*;
导入com.google.gdata.client.calendar.*;
导入com.google.gdata.data.*;
导入com.google.gdata.data.acl.*;
导入com.google.gdata.data.calendar.*;
导入com.google.gdata.data.extensions.*;
导入com.google.gdata.util.*;
导入java.net。*;
导入java.io.*;
导入java.util.List;
公共类GetGoogleCalendarEventByID{
公共静态void main(字符串[]args){
System.out.println(“在创建CalendarService之前”);
CalendarService myService=新的CalendarService(“exampleCo-exampleApp-1.0”);
System.out.println(“创建CalendarService之后”);
尝试
{        
System.out.println(“转到setUserCredentials”);
myService.setUserCredentials(“email@gmail.com“,”密码“);
URL提要URL=
新网址(“https://www.google.com/calendar/feeds/email@gmail.com/private/full”);
CalendarEventFeed myFeed=myService.getFeed(feedUrl,CalendarEventFeed.class);
List entries=myFeed.getEntries();
对于(CalendarEventEntry e:entries){
如果(e.getId().equalsIgnoreCase(“http://www.google.com/calendar/feeds/email%40gmail.com/events/EventIDLastPart")){
System.out.println(“获取CalendarEventEntry:+e.getId());
System.out.println(“CalendarEventEntry有文本:+e.getPlainTextContent());
}
}              
System.out.println(“完成获取事件”);
}
捕获(例外e)
{
System.out.println(“错误:+e.toString());
}
}
}
注意:feedUrl-这是您在日历设置下找到的日历URL

事件id的格式为

e、 g

希望能有帮助


恩戈尼丹

好吧,没关系,但它不能解决问题。我想查询将ID作为参数传递的日历提要,并返回与其关联的calendarEventEntry。我应该更明确一些。您可以自己构建URL:日历URL+正斜杠+事件id。您不需要查询。请看《开发人员指南》中的“更新事件”一段。