SAB*_*lyu 6 c# wpf windows-store-apps
有人可以让我清楚为什么我的代码每次返回相同的字符串?
public MainPage()
{
this.InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(5);
timer.Tick += OnTimerTick;
timer.Start();
}
private void OnTimerTick(object sender, object e)
{
getData();
HubText.Text = dumpstr;
}
private async void getData()
{
// Create an HttpClient instance
HttpClient client = new HttpClient();
var uri = new Uri("http://192.168.4.160:8081/v");
try
{
// Send a request asynchronously continue when complete
HttpResponseMessage response = await client.GetAsync(uri);
// Check that response was successful or throw exception
response.EnsureSuccessStatusCode();
// Read response asynchronously
dumpstr = await response.Content.ReadAsStringAsync();
}
catch (Exception e)
{
//throw;
}
}
string dumpstr;
Run Code Online (Sandbox Code Playgroud)
所以每隔5秒我就得到第一个请求中的字符串.我究竟做错了什么?
kie*_*wic 15
如果您正在使用Windows.Web.Http.HttpClient,则可以通过以下方式跳过本地缓存:
Windows.Web.Http.Filters.HttpBaseProtocolFilter filter =
new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
filter.CacheControl.ReadBehavior =
Windows.Web.Http.Filters.HttpCacheReadBehavior.MostRecent;
HttpClient client = new HttpClient(filter);
Uri uri = new Uri("http://example.com");
HttpResponseMessage response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
string str = await response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
你永远不会再两次得到相同的回应:)
但是,如果您可以访问服务器源代码,那么最优雅的修复方法是禁用正在下载的URI的缓存,即添加Cache-Control: no-cache标头.
Ste*_*ary 10
这是因为你正在对同一个URL进行GET.根据HTTP语义,值应该在合理的时间范围内相同,因此操作系统会为您缓存响应.
您可以通过以下任何方法绕过缓存: