0

我最近发布了一个关于回收物品的 WP8 应用程序。我一直在用新功能支持它,并修复或改进现有功能。

基本上,该应用程序所做的是使用一些 RSS 提要并将其显示在手机中。手机有 4 个部分:开始、搜索、新闻、收藏。

我遇到的问题在新闻部分。正如评论的那样,我消耗了一些 RSS。当我单击刷新按钮时,我所做的就是再次执行应用星显示新闻时加载的相同方法。但是,即使 RSS 提要有新数据,我也会得到相同的数据。有时需要一段时间才能看到新数据。

我正在执行一个异步方法来获取 RSS 提要并使用 HttpClient。该方法如下所示:

public async Task<ObservableCollection<News>> GetNews()
{
    try
    {
        HttpClient client = new HttpClient();
        var result = await client.GetStringAsync(source);
        var parseResult = XDocument.Parse(result);
        . . .
    }
    catch(Exception ex)
    {
       //throw
    }
}

所以,我的问题是:实现刷新功能的更好方法是什么?

4

2 回答 2

3

这可能是一个缓存问题。也就是说,您将获得一个缓存的响应。

尝试将无意义的随机值附加到您的查询字符串以避免获得缓存的响应。例如:

HttpClient client = new HttpClient();
var result = await client.GetStringAsync(source + "?nocahce=" + Guid.NewGuid());
var parseResult = XDocument.Parse(result);
于 2013-09-18T07:20:52.157 回答
2

@anderZubi 解释的很准确,我也被这个问题困扰了很长时间,但是有更优雅的方法来处理这个问题尝试将 DefaultRequestHeaders 属性添加到 HttpClient 这是代码

public async Task<ObservableCollection<News>> GetNews()
{
    try
    {
        HttpClient client = new HttpClient();

        client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");

        var result = await client.GetStringAsync(source);
        var parseResult = XDocument.Parse(result);
        . . .
    }
    catch(Exception ex)
    {
       //throw
    }
}
于 2013-11-22T10:40:08.437 回答