【问题标题】:How to properly implement refresh functionality in WP 8?如何在 WP 8 中正确实现刷新功能?
【发布时间】:2013-09-18 01:22:35
【问题描述】:

我最近发布了一个关于回收物品的 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
    }
}

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

【问题讨论】:

    标签: c# windows-phone-7 windows-phone-8 windows-phone


    【解决方案1】:

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

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

    HttpClient client = new HttpClient();
    var result = await client.GetStringAsync(source + "?nocahce=" + Guid.NewGuid());
    var parseResult = XDocument.Parse(result);
    

    【讨论】:

      【解决方案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
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2022-12-09
        • 2021-03-21
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        • 2020-09-03
        • 2020-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多