我正在使用Facebook-c-sharp將照片上傳到Facebook。此代碼工作正常,但對於Facebook的新帳戶此代碼似乎有問題。我認爲這可能與Facebook的新隱私政策有關,而且上述代碼的作者已經停止了新版本的發佈。 這個問題似乎與創建相冊有關。用FB的舊帳戶,專輯被創建並且照片上傳得當。對於新帳戶(最近創建的,大約20天之前),相冊會被創建,但是當Facebook返回XML響應時,我會在嘗試反序列化XML時遇到XMLException。在Facebook反應中反序列化XML例外新帳戶
舊帳戶的XML響應低於
<?xml version="1.0" encoding="UTF-8"?>
<photos_createAlbum_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
<aid>2470234845268380151</aid>
<owner>number</owner>
<name>AlbumName</name>
<created>number</created>
<modified>number</modified>
<description>description</description>
<location>location</location>
<link>url of the album created</link>
<size>0</size>
<visible>privacy setting</visible>
<modified_major>number</modified_major>
<object_id>number</object_id>
</photos_createAlbum_response>
新帳戶XML響應低於
<?xml version="1.0" encoding="UTF-8"?>
<photos_createAlbum_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
<aid>100001291780378_24994</aid>
<owner>number</owner>
<name>AlbumName</name>
<created>number</created>
<modified>number</modified>
<description>description</description>
<location>location</location>
<link>url of the album created</link>
<size>0</size>
<visible>privacy setting</visible>
<modified_major>number</modified_major>
<object_id>number</object_id>
</photos_createAlbum_response>
我得到的XMLException如下(再次:這只是發生新舊帳戶反序列化工作就好了)
type=Mono.Facebook.XMLException
message=Failed parsing XML
stack=
at Mono.Facebook.Util.GetResponse[T](String method_name, FacebookParam[] parameters)
at Mono.Facebook.FacebookSession.CreateAlbum(String name, String description, String location)
at Facebook.PostToFacebook(List`1 photos, String apiKey, String apiSecret, String authToken)
type=System.InvalidOperationException
message=There is an error in XML document (0, 0).
stack=
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream)
at Mono.Facebook.Util.GetResponse[T](String method_name, FacebookParam[] parameters)
正如你可以看到來自Facebook的新舊帳戶的XML響應都是類似的。但仍然對新帳戶反序列化失敗。這是爲什麼發生?我可以在這兩個xml文件中找到的唯一區別是第二個XML文件中(albumid)中存在「下劃線_」。但據我所知,下劃線是有效的XML,不應該是一個問題解析權?有人可以告訴我爲什麼我得到這個錯誤。
編輯:
我得到它的工作。如上所述,下劃線導致了這個問題。就我而言,我沒有檢查過這件事,這真是很愚蠢。在C#代碼中,援助聲明爲long。由於具有下劃線的字符串不能被反序列化爲long,所以我得到異常。我將Facebook的xml響應複製到xml文件中,然後執行xsd Facebook.xml和xsd Facebook.xsd來獲取Facebook.cs。我將生成的cs文件與我所用的cs文件進行了比較,看到援助在生成的cs中聲明爲String,並在我的文件中聲明爲long。
肯定會看看那個。謝謝 – user281693 2010-10-05 09:06:59