带有Windows Phone 7的协议缓冲网

时间:2010-07-13 09:27:36

标签: c# windows-phone-7 protocol-buffers protobuf-net

我正在尝试从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开发工具包中删除或尚未实现。

1 个答案:

答案 0 :(得分:0)

你是如何从溪流中读到的?

如果您将其作为字符串读取,那么它可能每个字符读取两个字节 - 而不是使用

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