好奇怪的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?
posted on 2009-05-30 23:36 Rene 閱讀(330) 評論(0) 編輯 收藏 所屬分類: Programming