美好的一天,我有这个应用程序读取7个小xml并存储结果,但从现在开始下载所有内容,即使xml文件没有改变。
我很想检查xml是否更新或者是否已被修改但是我找不到解决方案,也许这是一个简单的解决方案,我试图以更难的方式实现这个目标
有人可以帮忙吗?
在建议中感谢')
这是我的ATM代码:
WebClient downloader = new WebClient();
downloader.DownloadStringAsync(new Uri("http://feeds.feedburner.com/bluey/eventi20" + "?" + System.DateTime.Now.ToString(), UriKind.RelativeOrAbsolute));
downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(EventiDownloaded);
我试过以这种方式在xml的标题中寻找lastmodify或者我可以使用的东西
WebClient downloader = new WebClient();
downloader.DownloadStringAsync(new Uri("http://feeds.feedburner.com/bluey/eventi20" + "?" + System.DateTime.Now.ToString(), UriKind.RelativeOrAbsolute));
downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(EventiDownloaded);
WebHeaderCollection myWebHeaderCollection = downloader.ResponseHeaders;
foreach(var x in myWebHeaderCollection)
for (int i = 0; i < myWebHeaderCollection.Count; i++)
MessageBox.Show("\t" + myWebHeaderCollection.AllKeys.GetEnumerator() + " = " + myWebHeaderCollection.AllKeys.ElementAt(i));
但是我在myWebHeaderCollection
中得到一个空引用错误答案 0 :(得分:0)
也许您可以尝试使用ETag http://en.wikipedia.org/wiki/HTTP_ETag
您只能请求标题(不是整个内容)并抓取ETag并保存值。因此,您只应在ETag更改时执行完整请求。我个人没有这样做过。我遇到了和你一样的问题,但我的Feed每周更新一次,所以我做了一些不涉及这种实现的解决方法。
无论如何,这是一个快速示例,用于演示仅标题请求,您应该看到ETag,并且您可以提取您的使用值。
static void Main(string[] args)
{
WebRequest webRequest = HttpWebRequest.Create("http://www.forexfactory.com/ffcal_week_this.xml");
// Only request the headers, not the whole content
webRequest.Method = "HEAD";
var response = webRequest.GetResponse();
for (int i = 0; i < response.Headers.Count; i++)
{
Console.WriteLine(response.Headers.Keys[i] + " : " + response.Headers[i]);
}
Console.Read();
}