c# - Windows Phone 7 的 Protocol Buffer 网络

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

我正在尝试从 Windows Phone 7 应用程序的 Protocol Buffer 格式的服务器下载响应。

我正在尝试使用 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=340

但是这个方法在Windows Phone 7开发包上被删除了或者还没有实现。

最佳答案

你如何从流中读取信息?

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

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

关于c# - Windows Phone 7 的 Protocol Buffer 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3235790/

相关文章:

c++ - 使用 C++ 操作 protobuf 中的数据结构

c++ - 为什么我的 protobuf 反序列化给出空负载?

c# - 否则还是返回?

c# - 如何在 DateTimePicker 上显示小时和分钟

ios - wp7中的listboxItems可以重用吗?

windows-phone-7 - 未经授权的访问异常未处理

c# - Windows Phone 7 中的效果 (DropShadowEffect)

git - 如何维护原始文件?

c# - 如何使用 Linq 从父列表中选择和分组复杂的子对象

c# - DateTime.Now 的更新频率是多少?或者是否有更精确的 API 来获取当前时间?