windows phone中的内容web服务调用未刷新

本文关键字:服务 调用 刷新 web phone windows | 更新日期: 2023-09-27 18:17:43

目前,我正在开发一个Windows Phone 8.0应用程序,它可以在地图上显示大约100个GPS位置。GPS数据通过调用一个rest式的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 Client Libraries"。

第一次调用代码时,获得数据并在地图上很好地绘制GPS位置。然而,由于GPS设备不断移动,我必须每30秒刷新一次数据。这就是我碰壁的地方;包含在变量"result"中的数据永远不会改变。即使过了几分钟,数据还是一样的。原始数据包含一个datetime属性,它清楚地告诉我数据是旧的,而不仅仅是GPS设备静止不动。如果我将uri粘贴到web浏览器中,并每隔15秒点击刷新按钮,则数据确实会更改,因此web服务可以正常工作。

由于HttpClient包含在using语句中,它每次都被丢弃,并且一些隐藏的缓存机制似乎是不可能的。大家有什么想法吗?

欢呼

我尝试使用Fiddler,但必须遵循一个冗长的指令,使其与模拟器连接。-s恢复Fiddler安装的所有证书并将代码复制到常规WPF应用程序中,它也可以正常工作。我也不知道是怎么回事,但问题似乎与这是一个windows phone项目有关。

windows phone中的内容web服务调用未刷新

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

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

client.DefaultRequestHeaders.IfModifiedSince = DateTime.UtcNow;

见这里类似的问题:

  • Windows Phone 8中HttpClient没有缓存
  • WebClient/HttpClient的缓存问题