我正在使用WebClient
检索网站。我决定设置If-Modified-Since
是因为如果网站没有改变,我不想再得到它:
var c = new WebClient();
c.Headers[HttpRequestHeader.IfModifiedSince] = Last_refreshed.ToUniversalTime().ToString("r");
Last_refreshed
我存储上次访问该网站的时间的变量在哪里。
但是当我运行它时,我得到一个WebException
文本:
The 'If-Modified-Since' header must be modified using the appropriate property or method.
Parameter name: name
原来API 文档提到了这一点:
此外,在使用
WebClient
对象时,其他一些标头也受到限制。这些受限标头包括但不限于以下内容:
- 接受
- 联系
- 内容长度
- 期望(当值设置为“100-继续”时)
- If-Modified-Since
- 范围
- 传输编码
该类
HttpWebRequest
具有用于设置上述某些标头的属性。如果应用程序设置这些标头很重要,那么HttpWebRequest
应该使用类而不是WebRequest
类。
那么这是否意味着无法设置它们WebClient
?为什么不?If-Modified-Since
在 normal中指定有什么问题HTTP GET
?
我知道我可以只使用HttpWebRequest
,但我不想这样做,因为它的工作量太大(必须做一堆转换,不能只是将内容作为字符串获取)。
另外,我知道使用 System.Net.WebRequest 时无法设置一些 HTTP 标头是相关的,但它实际上并没有回答我的问题。