Windows Phone 8 HttpClient Get方法返回奇怪的结果

我正在开发一个Windows Phone 8应用程序,它将一些数据发送到执行它并返回结果的服务器。 可以随时查询服务器以获取当前执行的状态,该状态可以是初始化,运行或完成。 仅当执行处于完成状态时,输出才可用。 用户可以选择通过按“更新”按钮来检查执行的当前状态

XAML

 

这是方法

 private async void UpdateRunInfo(object sender, RoutedEventArgs e) { ExecutionItem clicked = ((sender as Button).DataContext as ExecutionItem); HttpClientHandler handler = new HttpClientHandler(); handler.Credentials = new NetworkCredential("username", "password"); HttpClient client = new HttpClient(handler); string Url = "http://somefakeurl.com/server/run/id/status"; string _status = await client.GetStringAsync(Url); clicked.status = _status; } 

所以问题是这个方法只在第一次调用时才能正常工作。 之后,无论服务器的实际状态如何,GetStringAsync()都会返回与第一次调用相同的结果。

我在单独的Windows Phone项目中尝试过这种方法,结果是一样的。 为了确保服务器正常运行,我这次在桌面应用程序上再次使用相同的C#代码,它完全正常。

我的理论是,因为我多次发送相同的请求,WP OS正在缓存最后的结果,它将它返回给我,而不是实际向服务器发出GET请求。

为什么HttpClient返回缓存状态而不是实际从服务器获取状态?

正如人们所评论的那样,这是一个缓存问题。 用户LB建议设置client.DefaultRequestHeaders.IfModifiedSince解决了问题

正如已经评论过的那样,这是一个缓存问题(简单来说:您的请求已缓存,因此您可以获得缓存的响应)。 阿列克谢的答案可能是最常用的,特别是使用当前时间作为查询参数。

注意:伙计们,请回答,不要发表评论,否则问题将保持“未答复”状态。