我正在使用 Rest API 开发一个移动应用程序。我正在使用异步调用,因为 Windows Phone 8 开发不支持 GetResponse 方法。
当我启动应用程序时,它使用 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);
获取响应流回调:
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;
该代码可以很好地获取结果。只是我在清除缓存时遇到了麻烦。我是否通过将“无缓存”添加到标题中来正确实现它?还是我错过了什么?它也应该添加到标题中吗?做我的救星!!