2010-07-13 27 views
2

我試圖從Windows Phone 7應用程序下載協議緩衝區格式的服務器的響應。與Windows Phone 7的協議緩衝網絡

我想用WebClient來做這件事,我的問題如下。

WebClient的只有兩個下載

DownloadStringAsync(new Uri(url)); 

OpenReadAsync(new Uri(url)); 

方法,但這兩方法都不好檢索響應,因爲響應的大小應該有16個十六進制CARACTERES(080118CBDDF0E104 ),但是通過這兩種方法獲得的字符串和流的大小僅爲8.

所以我正在尋找一種方法來解決我的問題。 我發現了一個C#

public static T DownloadProto<T>(this WebClient client, string address) 
{ 
    byte[] data = client.DownloadData(address); 
    using (var ms = new MemoryStream(data)) 
    { 
     return Serializer.Deserialize<T>(ms); 
    } 
} 

http://code.google.com/p/protobuf-net/source/browse/trunk/BasicHttp/HttpClient/ProtoWebClient.cs?spec=svn340&r=340

但這種方法已被刪除或尚未在Windows Phone 7開發工具包實現。

+0

事實上,我根本沒有時間去查看「v2」的socket/etc這個東西,它是v2在Phone 7上運行的。但是,真正的問題在於:線路上有什麼數據?如果你有一個小而完整的例子,我可以玩,我可以很好的使用它來幫助完成這個區域... – 2010-07-13 19:29:34

+0

但是;這裏的主要問題*似乎是將客戶端的完整片段 - 與實際的序列化引擎無關...? – 2010-07-13 19:30:47

回答

0

如何從流中讀取?

如果你正在讀它作爲一個字符串,那麼它可能在讀取兩個字節每字符 - 改用

var buf = new byte[16]; 
var actual = stream.Read(buf, 0, buf.Length);