在 C# 開發中,經常需要向多個 URL 發送 HTTP 請求並獲取回應。初學者可能會想分別撰寫重複的程式碼,但這不僅冗長難維護,也違反了 DRY(Don't Repeat Yourself)原則。本文將示範如何將多個 URL 放入陣列,配合 foreach 迴圈批次處理請求,並正確管理資源釋放。
finally 區塊或使用 using 陳述式確保 Stream、StreamReader、WebResponse 正確關閉,避免記憶體洩漏。string[] urls = {
"https://www.baidu.com",
"https://www.example1.com",
"https://www.example2.com"
};
foreach (var url in urls)
{
WebRequest request = WebRequest.Create(url);
WebResponse response = null;
Stream stream = null;
StreamReader reader = null;
try
{
response = request.GetResponse();
stream = response.GetResponseStream();
reader = new StreamReader(stream, Encoding.GetEncoding("gb2312"));
string html = reader.ReadToEnd();
// 這裡可將 html 存入檔案、解析或直接顯示
Console.WriteLine($"【{url}】回應長度:{html.Length}");
}
catch (Exception ex)
{
Console.WriteLine($"請求 {url} 失敗:{ex.Message}");
}
finally
{
reader?.Dispose();
stream?.Dispose();
response?.Close();
}
}
HttpClient 搭配 await 實現非同步並行請求,大幅提升效能。Content-Type 取得 charset,失敗再回退至預設編碼。透過陣列與迴圈,我們能以簡潔、可維護的方式批次執行多個網頁請求。搭配妥善的例外處理與資源釋放,即可構建穩健的資料擷取模組。