2013-12-19 27 views
1

我需要使用WebRequest將網頁內容下載到字符串中。 我不能使用WebClient,因爲它不支持某些我需要使用的HTTP頭。我無法弄清楚在這種情況下處理內存問題的最佳做法(如何正確處置它)。是否足夠使用using語句,還是需要在這裏添加一些try catch元素?正確使用WebRequest

這是我到目前爲止的代碼:

var webRequest = (HttpWebRequest)WebRequest.Create("http://www.gooogle.com"); 

using (var webResponse = (HttpWebResponse)webRequest.GetResponse()) { 
    using (var responseStream = webResponse.GetResponseStream()) { 
    responseStream.ReadTimeout = 30; 
    using (var streamReader = new StreamReader(responseStream, Encoding.UTF8)) { 
     var page = streamReader.ReadToEnd(); 
    } 
    } 
    Console.WriteLine("Done"); 
} 

回答

1

你的代碼是好的(當然除了一些異常處理將是很好的)。在使用using時,您不必擔心處置或關閉流,編譯器會爲此生成代碼。當然

的最好的事情是包裹上面的代碼在返回頁面中的函數,並把全球的try/catch在那裏,例如:

public string GetHtmlPage(string urlToFetch) 
{ 
    string page = ""; 

    try 
    { 
     ... code ... 

     return page; 
    } catch (Exception exc) 
    { 
     throw new HtmlPageRetrievalException(exc); 
    } 
} 
+0

這整個代碼塊是內部的試着抓。這足夠了嗎?還是我需要在此塊中添加一些異常處理?謝謝... –