如何为Windows Phone应用程序禁用异步HTTPWebRequest缓存
本文关键字:异步 HTTPWebRequest 缓存 应用程序 Windows Phone | 更新日期: 2023-09-27 18:03:23
我正在使用Rest API开发移动应用程序。我使用异步调用,因为GetResponse方法在Windows Phone 8开发中不支持。
当我启动应用程序时,它使用GET方法获取正确的数据。我已经实现了一个60秒的刷新间隔。当刷新触发时,我收到的JSON输出不是新输出,而是最初获取的输出。基本上,它不会让人耳目一新。我浏览了这里的一些博客,发现这是缓存的问题。我需要你帮我关闭这个缓存。此外,我检查并发现HttpRequestCachePolicy不能用作System.Net.Cache不存在于框架(我是新的开发,所以请纠正我,如果我在这里错了)下面是我使用的代码。
请求创建:
string AuthServiceUri = "http://" + Authentication.ipAddress + "/api/alerts/open";
HttpWebRequest alerts_request = HttpWebRequest.Create(AuthServiceUri) as HttpWebRequest;
alerts_request.Accept = "application/json";
alerts_request.Method = "GET";
alerts_request.Headers["AuthToken"] = Authentication.authToken;
alerts_request.BeginGetResponse(new AsyncCallback(AlertsGetResponsetStreamCallback), alerts_request);
GetResponseStreamCallback:
HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);
response.Headers["Cache-Control"] = "no-cache";
string responseString = "";
Stream streamResponse = response.GetResponseStream();
StreamReader reader = new StreamReader(streamResponse);
responseString = reader.ReadToEnd();
streamResponse.Close();
reader.Close();
response.Close();
string result = responseString;
代码可以很好地获取结果。只是说我在清理缓存时遇到了麻烦。我实现"无缓存"正确在这里通过将其添加到标题?还是我错过了什么?它也应该添加到标题中吗?做我的救世主吧!!
最快的解决方法可能是在每次调用时修改uri。这将绕过缓存。只需附加一个参数,如"? "Dummy =345",并在每次调用时更改参数值(345)。这看起来像是缓存机制的一个新uri,它将检索内容。