2009年6月9日 星期二

URLLoader取得的bytesLoaded有可能大於bytesTotal!?


無意中發現了這一個很奇怪但是我目前為止無法解釋的現象。
我現在並不認為這是URLLoader的「Bug」,因為我覺得這種情況是有點複雜的,也許並不完全是URLLoader的問題。


情況如下:
今天手癢想寫個類別把我自己在Picasa相簿裡的一些照片資訊取出,讓自己以後可以方便編寫相簿瀏覽的介面。
因為在本機開發還不需要顧慮到crossdomain的問題,所以一開始我是直接取用Picasa的RSS,起初都還挺順利的,RSS的解析也都寫得差不多了,但是當我改讀另一個照片比較多的相簿時,就發現要將URLLoader.data給轉型成XML時一直出錯。
這個RSS的URL如下:
http://picasaweb.google.com/data/feed/base/user/jason.tseng76/albumid/5243914003216812001?alt=rss&kind=photo&hl=zh_TW

第一個反應就是,會不會是RSS的檔太大了? 導致RSS在還沒被完全讀取完全之前URLLoader的COMPLETE事件就被觸發了?
所以我就多監聽了一下ProgressEvent.PROGRESS事件,結果就很有趣了,trace出來的結果是bytesLoaded的值居然比bytesTotal還大。就看著ProgressEvent硬生生的把破表的值給丟了出來。
我也試過把URLLoader.data的值給trace出來,但是可能真的太大了,每次trace就每次當。

於是我也只能再次懷疑是不是檔頭或什麼的東西造成了URLLoader的判別出錯,直接把URLLoader.data轉型成XML出問題恐怕一定是整個資料讀取不完全(或是讀到多的東西!!?)。
所以我只好改走Picasa專門提供給Flash使用的RSS(有crossdomain policy的路)。
http://code.google.com/intl/zh-TW/apis/picasaweb/reference.html#Flash

轉換過後原本RSS的URL會變成這樣:
http://photos.googleapis.com/data/feed/base/user/jason.tseng76/albumid/5243914003216812001?alt=rss&kind=photo&hl=zh_TW

再try一次。
過了!
但是bytesTotal永遠都是顯示為0…。
好吧… 只能說至少work了。
至於為什麼bytesTotal會是0? 我想這已經有點超出我知識的範圍了…。

沒有留言:

張貼留言