Как установить заголовок http If-Modified-Since на веб-запрос в Windows Phone 7?

Попытка установить заголовок "If-Modified-Since" в wp7:

request.Headers[HttpRequestHeader.IfModifiedSince] = dateString;

Выдает ошибку:

Этот заголовок должен быть изменен с соответствующим свойством.

Это означает, что свойство.IsModifiedSince должно использоваться в классе запроса, как описано в MSDN: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.ifmodifiedsince.aspx

Но это свойство не существует в Silverlight, т.е. WP7.

Кто-нибудь смог установить этот заголовок для http-запроса на Windows Phone 7?

Шон Вильдермут опубликовал эту проблему еще в сентябре 2010 года без решения: http://social.msdn.microsoft.com/Forums/en/windowsphone7series/thread/8aec7481-2cf3-4047-b0d4-05d4313a9e4c

Спасибо!

4 ответа

Вы можете просто использовать строку, которая HttpRequestHeader.IfModifiedSince представляет собой:

request.Headers["If-Modified-Since"] = dateString; 

Я должен был сделать это с рядом других заголовков, которые WP7 не предоставляет вспомогательные методы для установки.

Обновить
Исходя из замечаний на http://msdn.microsoft.com/en-us/library/8y7x3zz2(v=VS.95).aspx может показаться, что установить этот заголовок в WP7 невозможно.

В качестве альтернативы вы можете создать свой собственный прокси-сервер для обработки кэширования вашего приложения.

Это можно установить только на HTTPWebRequest объект так литье WebRequest должен позволить вам установить свойство, например:

((HttpWebRequest)request).IfModifiedSince = modifiedDate;

Требуется DateTime объект, поэтому вам может понадобиться сначала проанализировать строку.

Краткий ответ: это не может быть сделано, не поддерживается.

Решением было бы, как утверждает Мэтт Лэйси, создать прокси-класс, чтобы справиться с этим.

Этот прокси установит

request.AllowStreamReadBuffering = false;

и затем анализируйте ответ, пока заголовок не закончится или значение заголовка не будет найдено.

Заметка! Этот обходной путь ограничивает данные, загружаемые в телефон, но не работу, необходимую серверу для обработки запроса.

request.Headers.Add("If-Modified-Since", datestring);
Другие вопросы по тегам