尝试在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
谢谢!
答案 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);