好奇怪的Google API

好奇怪的Google API

这几天在试用 Picasa Web API 。在获取相册信息的时候总是报数据解析异常:
com.google.gdata.util.ParseException: [Line 1, Column 262] Invalid root element, expected (namespace uri:local name) of (http://www.w3.org/2005/Atom:feed), found (http://www.w3.org/2005/Atom:entry
查看 xml 文件确实有这个问题,但一时也找不出什么解决方案。而且想想 Google 应该也不会把这么一个低级错误留在那里。后来仔细对比文档,终于发现了问题的所在。

对于每个相册都有一个唯一的 Id ,通过 UserFeed 可以获取一个 AlbumEntry 对象的列表,也就是相册的基本信息。 AlbumEntry 类中有一个 getId ()方法,用来获取相册的 Id 。之后再通过相册的 Id 就能得到一个 AlbumFeed ,也就是相册的详细内容。其中包括了一个 PhotoEntry 对象列表,即照片的信息。

但是,这个 getId ()并不仅仅返回一个 Id 值,而是一个 URL 字符串,格式如下: http://picasaweb.google.com/data/entry/api/user/<username>/albumid/<id>
通过这个URL可以得到一个XML文档,但该文档的格式是错误的,无法完成解析。查看文档后发现,正确的URL格式应该是:
http://picasaweb.google.com/data/feed/api/user/<username>/albumid/<id>
所以在调用getId()方法后,还要对返回URL字符串作切割来得到相册的Id,再构造出正确的URL。问题是解决了,但却不明白Google这样设计的原因,或许是一个Bug

你可能感兴趣的:(好奇怪的Google API)