2012-05-08 146 views
1

我可以從網站的HTML代碼是這樣的:HTML內容從網站

public void Test() 
{ 
    WebClient client = new WebClient(); 
    client.DownloadStringCompleted += 
     new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
    client.DownloadStringAsync(new Uri("http://testUrl.xml")); 
} 

void client_DownloadStringCompleted(object sender, 
            DownloadStringCompletedEventArgs e) 
{ 
    string html = e.Result; 
    //Now do something with the string... 
} 

但我需要得到更新的HTML每次30秒,所以我寫了:

public void TestMain() 
{ 

    DispatcherTimer Timer = new DispatcherTimer() 
    { 
     Interval = TimeSpan.FromSeconds(30) 
    }; 
    Timer.Tick += (s, t) => 
    { 
     Test(); 
    }; 
    Timer.Start(); 
} 

我改變XML,但我得到相同的HTML,有什麼不對?

+0

也許你得到相同的HTML,因爲它從上次沒有改變?... – RhysW

+0

不,當然我改變e xml文件並檢查網站上的html更改) – revolutionkpi

+1

您是否記得刷新該網站?有時緩存不會刷新,所以你永遠不會看到有區別 – RhysW

回答

3

WebClient中包含緩存。如果您請求兩次相同的URI,則第二次將直接從緩存中獲取整個內容。

有沒有辦法對WebClient禁用緩存,所以你有兩種解決方法:

  • 使用HttpWebRequest,而不是WebClient
  • 添加一個隨機參數到URI:

    client.DownloadStringAsync(new Uri("http://testUrl.xml?nocache=" + Guid.NewGuid())); 
    
+0

謝謝,正好適合我在他的問題上給予他的完美時間的評論 – RhysW