Протокол буферной сети с Windows Phone 7 - PullRequest
2 голосов
/ 13 июля 2010

Я пытаюсь загрузить ответ с сервера в формате Protocol Buffer из приложения 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=340

Но этот метод был удален или еще не реализован в комплекте для разработки для Windows Phone 7.

1 Ответ

0 голосов
/ 11 февраля 2011

Как вы читаете из потока?

Если вы читаете его как строку, возможно, он читает по два байта на символ - вместо этого используйте

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