Rest API を使用してモバイル アプリを開発しています。Windows Phone 8 開発では GetResponse メソッドがサポートされていないため、非同期呼び出しを使用しています。
アプリケーションを起動すると、GET メソッドを使用して正しいデータをフェッチします。60 秒の更新間隔を実装しました。更新がトリガーされると、受け取る JSON 出力は新しいものではなく、最初にフェッチされたものです。基本的にさわやかではありません。ここでいくつかのブログを調べたところ、キャッシュの問題であることがわかりました。このキャッシュを無効にするのに助けが必要です。また、フレームワークにSystem.Net.Cacheが存在しないため、HttpRequestCachePolicyを使用できないことを確認しました(私は開発に不慣れなので、ここで間違っている場合は修正してください)
以下は私が使用しているコードです。
リクエストの作成:
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;
コードは結果をフェッチするだけでうまく機能します。キャッシュをクリアするのに問題があるというだけです。ここで「キャッシュなし」をヘッダーに追加して正しく実装していますか? または、何か不足していますか?ヘッダーにも追加する必要がありますか?私の救世主になってください!!