首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# Web 站點交互檢測 — HttpWebRequest 快速可用性探測

     編輯:關於C語言

核心代碼


HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

int result = 0;
if (response.StatusDescription == "OK")
{
    result = 1;  // 站點可用
}

response.Close();  // **關鍵:必須關閉,否則多次檢測會衝突異常**

關鍵點解析

  • WebRequest.Create:自動根據 URL 協議建立對應 Request
  • GetResponse():同步發送請求並取得回應(會阻塞執行緒)
  • StatusDescription == "OK":HTTP 200 成功狀態
  • 必須呼叫 Close():釋放連線資源,避免連線池耗盡導致後續請求失敗

進階建議


// 設定超時避免永久阻塞
request.Timeout = 5000;  // 5 秒
request.ReadWriteTimeout = 5000;

// 異步版本 (不阻塞 UI 執行緒)
request.BeginGetResponse(ar => 
{
    try 
    {
        using (var resp = (HttpWebResponse)request.EndGetResponse(ar))
        {
            bool ok = resp.StatusCode == HttpStatusCode.OK;
            // 處理結果...
        }
    }
    catch { /* 處理異常:DNS失敗、連線拒絕、超時等 */ }
}, null);

相關類別深入學習

  • WebRequest / WebResponse 基類
  • HttpWebRequest / HttpWebResponse HTTP 專用
  • ServicePointManager:連線池、預設連線限制、SSL 驗證控制
  • 現代替代:HttpClient (.NET Core / .NET 5+ 推薦)

常見異常處理

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
異常原因
WebException (Timeout)伺服器無回應超過 Timeout
WebException (ConnectFailure)DNS 解析失敗/連線被拒
WebException (ProtocolError)HTTP 非 2xx 狀態碼 (404, 500 等)
InvalidOperationException重複使用 Request 物件