我正在尝试编写一个从远程XML文件读取数据的RSS阅读器,问题是当我第一次运行应用程序时它正常下载但是当我更新XML文件的信息并再次运行应用程序时不下载新项目。
我在public Main()
WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri("http://suntvhost.do.am/sunnews.xml"));
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
处理程序:
private void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
//This simple test will return an error if the device is not connected to the internet
if (e.Error != null)
return;
XElement xmlitems = XElement.Parse(e.Result);
// We need to create a list of the elements
List<XElement> elements = xmlitems.Descendants("item").ToList();
// Now we're putting the informations that we got in our ListBox in the XAML code
// we have to use a foreach statment to be able to read all the elements
// Description 1 , Link1 , Title1 are the attributes in the RSSItem class that I've already added
List<RSSItem> aux = new List<RSSItem>();
foreach (XElement rssItem in elements)
{
RSSItem rss = new RSSItem();
rss.Description1 = rssItem.Element("description").Value;
rss.Link1 = rssItem.Element("link").Value;
rss.Title1 = rssItem.Element("title").Value;
rss.Date1 = rssItem.Element("pubDate").Value;
aux.Add(rss);
TextBlock tbTitle = new TextBlock();
tbTitle.Text = "\n" + rss.Title1;
ListBoxRss.Items.Add(tbTitle);
// and so on for the rest of items...
}
}
答案 0 :(得分:3)
如果您获得相同的RSS文件,那么这可能是由于客户端缓存造成的 通过添加此HTTP-Header强制Windows Phone下载为我工作的RSS文件:
wc.Headers[ HttpRequestHeader.IfModifiedSince ] = "Sat, 29 Oct 1994 19:43:31 GMT";
答案 1 :(得分:1)
您需要做的就是:
string myUrl = "http://suntvhost.do.am/sunnews.xml?rand={0}";
...
_webClient.DownloadStringAsync(new Uri(string.Format(myUrl, DateTime.Now.Ticks)));
答案 2 :(得分:0)
我首先在之前注册事件处理程序,然后实际尝试获得一些结果。注册该事件处理程序可能为时已晚:
WebClient wc = new WebClient();
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri("http://suntvhost.do.am/sunnews.xml"));
此外,只有在出现错误时返回并不能轻松诊断任何问题,做一些事情将其写入日志文件等。
答案 3 :(得分:0)
问题是WebClient正在缓存数据。
更多相关信息: C# WebClient disable cache