2015-06-24 61 views
0

我在windowsphone 8上有一個關於webclient的問題。 我在我的代碼中使用了API使用webclient。WebClient.DownloadStringAsync URL不能正常工作

public void LoadData(bool refresh) 
    { 
     IsLoading = true; 
     WebClient webclient = new WebClient(); 
     webclient.DownloadStringCompleted += webclient_DownloadStringCompleted; 
     webclient.DownloadStringAsync(new Uri("http://api.xxxx.com/getQuestion")); 
    } 

    public void webclient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     RootObject deserCustomers = JsonConvert.DeserializeObject<RootObject>(e.Result); 
     foreach (var cust in deserCustomers.data) 
     { 
      Debug.WriteLine(cust.title); 
      int length = cust.question.Length; 
      string subquestion; 
      if (length > 100) { subquestion = cust.question.Substring(0, 100); } 
      else { subquestion = cust.question; } 
      _questiondata.Add(new QuestionItem() { Title = cust.title, Question_Str = subquestion, Slug = cust.slug }); 
     } 

     IsLoading = false; 
    } 

這是第一次工作,數據是完全一樣的網站。但是當用新的問題進行網絡更新時,我嘗試第二次調用方法LoadData,這些數據與web不同。網絡上的新更新問題不會顯示在我的應用程序(Windows Phone)中。 我應該怎麼做,有沒有任何緩存讓我的結果不像網絡上更新?

非常感謝。

+0

聽起來像一個緩存相關的問題。也許這個SO條款可以幫助你:[在WebClient中禁用緩存](http://stackoverflow.com/questions/3812089/c-sharp-webclient-disable-cache) –

+0

@PatrikEckebrecht謝謝。我添加了隨機變量到網址和它的作品! :) –

回答

0

我有一個幫助,它解決了。試試這個:

public void LoadData(bool refresh) 
{ 
    IsLoading = true; 
    WebClient webclient = new WebClient(); 
    webclient.DownloadStringCompleted += webclient_DownloadStringCompleted; 
    Random random = new Random(); 
    webclient.DownloadStringAsync(new Uri("http://api.xxxx.com/getQuestion?random="+ random.Next().ToString())); 
} 
+0

這看起來不錯,但它仍然有可能有重複的數字,因爲'Random.Next()'可能會產生數千次相同的值。或者,您可以只計算一些整數變量。 –

+0

感謝您關注@PatrikEckebrecht。 但緩存位置在哪裏?服務器端或客戶端 –

+0

該緩存由操作系統完成。典型的做法是添加DateTime.Now.Ticks,以避免隨機數衝突。 –