使用Google API Java客户端来解析公共共享的日历RSS源

问题描述:

我试图构建一个Android应用程序,该应用程序在公共日历RSS源中显示列表中的Google日历条目。日历Feed是公开的,但不会共享给任何特定的用户。使用Google API Java客户端来解析公共共享的日历RSS源

我已经在iOS上通过使用Google的gdata库(结合公共日历RSS)来解析和显示公共日历提要。

不幸的是,gdata与Android不兼容。 Google提供了新的google-api-java-client库,但所有示例代码都与位于设备上的谷歌帐户配合使用,然后通过OAuth进行身份验证。

有没有什么办法可以抓取和解析这些新库的公共提要,而不必将验证信息存储在设备上?甚至认证呢?

我找到了解决方案。使用Google Api Java客户端示例中的当前YouTube示例可以看到一个很好的例子。

http://code.google.com/p/google-api-java-client/wiki/SampleProgram

拼图的缺失部分是具有:

  1. 扩展GoogleUrl类(我用CalendarUrl)
  2. 创建匹配 饲料jsonc输出的对象(你可以通过将& alt = jsonc添加到供稿URL的 末尾来获得jsonc输出)
  3. Annotate(@Key(“NameOfField”))步骤2,一旦你做到了这一点,匹配jsonc名

下面的代码将建立并得到你所需要的一切:

HttpTransport transport = new NetHttpTransport(); 
final JsonFactory jsonFactory = new JacksonFactory(); 
HttpRequestFactory factory = transport.createRequestFactory(new HttpRequestInitializer() { 
     @Override 
     public void initialize(HttpRequest request) { 
      // set the parser 
      JsonCParser parser = new JsonCParser(jsonFactory); 
      request.addParser(parser); 
      // set up the Google headers 
      GoogleHeaders headers = new GoogleHeaders(); 
      headers.setApplicationName("Google-CalendarSample/1.0"); 
      headers.gdataVersion = "2"; 
      request.setHeaders(headers); 
     } 
}); 

CalendarUrl url = new CalendarUrl(YOUR_FEED_URL); 

HttpRequest request = factory.buildGetRequest(url); 
CalendarFeed feed = request.execute().parseAs(CalendarFeed.class);