2015-12-02 31 views
0

我想知道几天发生了什么事情。我正在为Windows Phone 8.1编写一个应用程序,该应用程序使用HttpClient从Internet下载json字符串。它运行良好,但运行应用程序(在OnNavigatedTo事件)后只有一次。稍后,粉碎应该再次下载字符串的“刷新”按钮不起作用。它仍然是第一个下载的字符串值。在服务器上,这个字符串发生了变化,我可以通过在PC上的浏览器中查看它来确认。WP8.1 HttpClient在第一次请求后没有下载字符串

using Newtonsoft.Json; 
using System; 
using System.Net.Http; 
using System.Threading.Tasks; 
using Windows.UI.Popups; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Navigation; 

namespace WP8App 
{ 
    public sealed partial class MainPage : Page 
    { 
     private readonly Uri Website = new Uri("https://some-website.com/files/status.json"); 
     private HttpClient http = new HttpClient(); 

     public MainPage() 
     { 
      this.InitializeComponent(); 
      this.NavigationCacheMode = NavigationCacheMode.Required; 
     } 

     protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      Refresh(); 
     } 

     private async void Button_Refresh_Click(object sender, RoutedEventArgs e) 
     { 
      Refresh(); 
     } 

     private async void Refresh() 
     { 
      var response = await http.GetStringAsync(Website); 
      JsonObject api = JsonConvert.DeserializeObject<JsonObject>(response); 
      TextBox_A.Text = api.value; 
      TextBox_B.Text = api.length; 
      TextBox_C.Text = api.size; 
      TextBox_F.Text = api.volume; 
     } 

     private async void ShowDialog(string value) 
     { 
      MessageDialog box = new MessageDialog(value); 
      await box.ShowAsync(); 
     } 
    } 
} 

我不是在异步高手,所以我指望你的鹰眼前的xD感谢

+0

你试过把一个断点在'Refresh'方法,看它是否真的调用,并返回一个不同的值? –

+0

请参阅http://stackoverflow.com/questions/21134380/no-cache-with-httpclient-in-windows-phone-8/28266608#28266608 – kiewic

回答

0

请求缓存是在Windows Phone上非常积极。绕过它的最简单方法是在URL的末尾添加一个随机参数。例如:

private readonly string Website = "https://some-website.com/files/status.json?nocache={0}"; 

然后在每次使用时更改该值。使用当前时间戳是一个又好又便宜的方法,以确保该网址将永远是不同的:

var response = await http.GetStringAsync(new Uri(string.Format(Website, DateTime.UtcNow.Ticks)); 
+0

谢谢!问题解决了 – ukulele

相关问题