2010-07-13 3 views
2

Я пытаюсь загрузить ответ с сервера, который находится в формате буфера протокола из приложения Windows Phone 7.Протокол буферной сети с окнами 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

Действительно, Я просто не успел посмотреть на сокет/etc на вещи для «v2», и это v2, который работает на Phone 7. Однако реальный вопрос здесь: какие данные идут по проводам? Если у вас есть небольшой, но полный пример, который я могу играть, я вполне мог бы использовать его, чтобы помочь завершить эту область ... –

+0

Однако; главная проблема здесь * кажется *, чтобы получить полный фрагмент для клиента - это должно быть не связано с реальным механизмом сериализации ...? –

ответ

0

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

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

var buf = new byte[16]; 
var actual = stream.Read(buf, 0, buf.Length); 
Смежные вопросы