内容网络服务调用未在Windows手机中刷新

时间:2014-08-13 10:06:50

标签: c# web-services rest windows-phone-8

目前,我正在开发一个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手机项目有关。

1 个答案:

答案 0 :(得分:2)

它可能会缓存第一次调用的结果。您可能需要在每次后续调用之前在请求标头中设置IfModifiedSince属性,以确保其获取最新值。

示例代码来自:https://stackoverflow.com/a/17884734/61226

client.DefaultRequestHeaders.IfModifiedSince = DateTime.UtcNow;

在此处查看类似问题: