2

我正在尝试从 Windows Phone 7 应用程序的协议缓冲区格式的服务器下载响应。

我正在尝试使用 WebClient 执行此操作,我的问题如下。

WebClient只有两种下载方式

DownloadStringAsync(new Uri(url));

OpenReadAsync(new Uri(url));

但是这两种方法都不好检索响应,因为响应大小应该有16个十六进制字符(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=3​​40

但此方法已被删除或尚未在 Windows Phone 7 开发工具包上实现。

4

1 回答 1

0

你是如何从流中阅读的?

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

var buf = new byte[16];
var actual = stream.Read(buf, 0, buf.Length);
于 2011-02-11T11:51:36.323 回答