我正在开发一个Windows Phone 8应用程序,它会将一些数据发送到服务器上执行,并返回结果。可以随时查询服务器以获取当前执行状态,包括初始化、运行或完成。只有在执行完成状态下才能获得输出。用户可以通过按下“更新”按钮来检查执行的当前状态。
XAML
所以,问题在于此方法仅在第一次调用时有效。之后,无论服务器的实际状态如何,GetStringAsync()都会返回与第一次调用相同的结果。
我在一个独立的Windows Phone项目中尝试了这个方法,结果是一样的。 为确保服务器正常运行,我再次尝试了相同的C#代码,这次是在桌面应用程序中,它完美地运行。
我的理论是,由于我发送了多次相同的请求,WP OS正在缓存上一个结果,并将其返回给我,而不是实际进行GET请求到服务器。
为什么HttpClient返回已缓存状态,而不是从服务器实际获取状态?
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 OS正在缓存上一个结果,并将其返回给我,而不是实际进行GET请求到服务器。
为什么HttpClient返回已缓存状态,而不是从服务器实际获取状态?
client.DefaultRequestHeaders.IfModifiedSince
。 - L.B