使用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
拼图的缺失部分是具有:
- 扩展GoogleUrl类(我用CalendarUrl)
- 创建匹配 饲料jsonc输出的对象(你可以通过将& alt = jsonc添加到供稿URL的 末尾来获得jsonc输出)
- 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);