【发布时间】:2014-08-13 10:06:50
【问题描述】:
目前,我正在开发一个在地图上显示大约 100 个 GPS 位置的 Windows Phone 8.0 应用程序。 GPS数据通过调用RESTful webservice获取,如下:
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 包“Microsoft HTTP 客户端库”。
第一次调用代码时,会获取数据,并且 GPS 位置会很好地绘制在地图上。但是,由于 GPS 设备不断移动,我必须每 30 秒刷新一次数据。这就是我碰壁的地方;变量“结果”中包含的数据永远不会改变。即使在几分钟后,数据也是一样的。原始数据包含一个 datetime 属性,它清楚地告诉我数据是旧的,而不仅仅是静止不动的 GPS 设备。如果我将 uri 粘贴到网络浏览器中,并每 15 秒点击一次刷新按钮,则数据确实发生了变化,因此网络服务正常工作。
由于 HttpClient 包含在 using 语句中,因此每次都会将其释放,并且某些隐藏的缓存机制似乎是不可能的。那么,有人有想法吗?
干杯
更新
我尝试使用 Fiddler,但必须遵循冗长的说明才能使其与模拟器连接。完成后,就没有任何效果了:-s 将 Fiddler 安装的所有证书恢复并将代码复制到常规 WPF 应用程序中,这也是一种魅力。我对正在发生的事情没有更深入的了解,但问题似乎与它是一个 windows phone 项目有关。
【问题讨论】:
-
你有没有通过 burp/fiddler 运行这个应用程序,看看它是否会发出这些额外的调用?另外,您如何每 15 秒调用一次此方法?
-
@zaitsman 从来没有听说过打嗝,但我试过 fiddler。那里一定有一些我错过的设置,因为它根本没有显示任何到 WP8 应用程序的流量(甚至不是获取数据的第一个调用)。我正在从 DispatcherTimer 调用发布的方法。
标签: c# web-services rest windows-phone-8