目前,我正在开发一个Windows Phone 8.0应用程序,它在地图上显示大约100个GPS位置。通过调用RESTful Web服务获得GPS数据,如下所示:
public async Task<string> GetWebContent(string uri)
{
string result = null;
using (var client = new HttpClient())
{
result = await client.GetStringAsync(new Uri(uri));
}
return result;
}
这里,HttpClient取自Nuget Package“Microsoft HTTP Client Libraries”。
第一次调用代码时,会获取数据并在地图上很好地绘制GPS位置。但是,由于GPS设备不断移动,我必须每30秒刷新一次数据。这就是我撞墙的地方;变量“result”中包含的数据永远不会改变。即使几分钟后数据也是一样的。原始数据包含一个日期时间属性,它清楚地告诉我数据是旧的,而不仅仅是GPS设备静止不动。如果我将uri粘贴到web浏览器中,并且每隔15秒点击刷新按钮,则数据会发生变化,因此Web服务正常运行。
由于HttpClient包含在using语句中,因此每次都会将其处理掉,并且某些隐藏的缓存机制似乎不可能。那么,有没有人有想法?
欢呼声
更新
我尝试使用Fiddler,但必须遵循冗长的指令才能使其与模拟器连接。一旦完成,就没有任何工作了:-s恢复Fiddler安装的所有证书并将代码复制到常规的WPF应用程序,并且它的工作原理也很有魅力。我不再理解正在发生的事情,但问题似乎与这是一个Windows手机项目有关。
答案 0 :(得分:2)
它可能会缓存第一次调用的结果。您可能需要在每次后续调用之前在请求标头中设置IfModifiedSince属性,以确保其获取最新值。
示例代码来自:https://stackoverflow.com/a/17884734/61226
client.DefaultRequestHeaders.IfModifiedSince = DateTime.UtcNow;
在此处查看类似问题: