2013-12-15 29 views
0

我有這樣的代碼,以從API獲取JSON數據WP8:的HttpClient這麼想的獲得更新WP8後數據

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri(mainURL.ToString()); 
HttpResponseMessage response = await client.GetAsync(""); 
string res = await response.Content.ReadAsStringAsync(); 
var root = await JsonConvert.DeserializeObjectAsync<Rootobject>(res); 

一切完美的作品,但是當我從網站上的網絡API更新數據並嘗試使用此代碼再次檢索數據,即使訪問瀏覽器中的URL,也會獲取舊數據,從而獲取新數據。

當我逐行調試時,我看到「響應」對象包含舊數據。

我發現解決這個問題的唯一方法就是以這種方式重建項目。

如何正確獲取更新的數據?

回答

1

可能會涉及一些緩存。嘗試在URL中添加一些隨機字符串,例如

client.BaseAddress = new Uri(mainURL.ToString()+"&random="+DateTime.Now.Ticks); 
+0

它的工作原理。謝謝。 –

1

我有同樣的問題。我試過這可能會對你有所幫助。

HttpWebRequest request = HttpWebRequest.CreateHttp(mainURL.ToString()); 
    request.Method = "GET or Post"; 
    request.BeginGetResponse(ResponseCallBack, request); 


    void ResponseCallBack(IAsyncResult asyncResult) 
    { 
    HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState; 
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult); 
        using (Stream data = response.GetResponseStream()) 
          { 
           using (var reader = new StreamReader(data)) 
           { 
            string jsonString = reader.ReadToEnd(); 
            MemoryStream memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)); 
            DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(Rootobject)); 
            Rootobject yourdata= dataContractJsonSerializer.ReadObject(memoryStream) as Rootobject; 

           } 
          } 
    } 
+0

這也適用。感謝幫助。 –