我正在开发一个 Windows Phone 8 应用程序,它将一些数据发送到服务器,服务器执行该数据并返回结果。可以随时查询服务器以获取当前执行的状态,可以是正在初始化、正在运行或已完成。仅当执行处于完成状态时输出才可用。用户可以选择通过按“更新”按钮来检查当前的执行状态
XAML
<Button Background="{StaticResource PhoneAccentBrush}"
Click="UpdateRunInfo" > Update info</Button>
这是方法
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 操作系统会缓存最后的结果,并将其返回给我,而不是实际向服务器发出 GET 请求。
为什么 HttpClient 返回缓存的状态而不是实际从服务器获取状态?
正如评论者所说,这是一个缓存问题。
来自用户L.B.的建议设置client.DefaultRequestHeaders.IfModifiedSince
解决了问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)