如何在Windows Phone 7中的WebRequest上设置http标头If-Modified-Since?

时间:2011-01-25 15:34:55

标签: silverlight windows-phone-7

尝试在wp7中设置'If-Modified-Since'标头:

request.Headers[HttpRequestHeader.IfModifiedSince] = dateString;

给出错误:

必须使用适当的属性修改此标头。

这意味着应该在请求类上使用属性.IsModifiedSince,如MSDN中所述:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.ifmodifiedsince.aspx

但Silverlight中不存在此属性,即WP7。

是否有人能够在Windows Phone 7上为http请求设置此标头?

Shawn Wildermuth在2010年9月发布了这个问题,没有解决方案: http://social.msdn.microsoft.com/Forums/en/windowsphone7series/thread/8aec7481-2cf3-4047-b0d4-05d4313a9e4c

谢谢!

4 个答案:

答案 0 :(得分:3)

您可以使用HttpRequestHeader.IfModifiedSince代表的字符串:

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

我必须使用许多其他标题来执行此操作,WP7不会公开帮助方法进行设置。

<强>更新
根据{{​​3}}的评论,似乎无法在WP7中设置此标头。

作为替代方案,您可以创建自己的代理服务器来处理应用程序的缓存。

答案 1 :(得分:1)

这只能在HTTPWebRequest对象上设置,因此转换WebRequest应允许您设置属性,例如:

((HttpWebRequest)request).IfModifiedSince = modifiedDate;

它需要一个DateTime对象,因此您可能需要先解析字符串。

答案 2 :(得分:0)

简短的回答是:无法完成,不支持。

正如Matt Lacey所述,解决方案是创建一个代理类来处理这个问题。

该代理将设置

request.AllowStreamReadBuffering = false;

然后解析响应,直到标题结束或找到标题值。

请注意!此解决方法限制下载到手机的数据,但不限制服务器处理请求所需的工作。

答案 3 :(得分:-1)

request.Headers.Add("If-Modified-Since", datestring);