獲取網頁源碼可以通過WebRequest類和WebResponse類。
1.WebRequest類
WebRequest類是.Net Framework的請求/響應模型的abstract基類,用於訪問Internet數據。使用請求/響應模型的應用程序可以用協議不可知的方式從Internet請求數據。此類在System.Net命名空間下。Request類的常用方法:
方法 | 說明 |
---|---|
Abort | 終止請求 |
BeginGetResponse | 當在子類 中被重寫時,開始對Internet資源的異步請求 |
Create | 初始化新的WebRequest |
CreateDefault | 爲指定的URI方案初始化新的WebRequest實例 |
EndGetRequestStream | 當在子類中重寫時,返回用於將數據寫入Internet資源的Stream(異步訪問) |
GetResponse | 當在子類中被重寫時,返回對Internet請求的響應 |
GetSystemWebProxy | 返回當前模擬用戶的Internet Explorer設置中配置的代理 |
RegisterPrefix | 爲指定的URI註冊WebRequest子代理 |
語法:public static WebRequest Create (Uri requestUri)
說明:requestUri表示包含請求資源的URI的Uri,返回值爲指定的URI方案的WebRequest子代理。
(2)GetResponse方法:當在子類中被重寫時,返回對Internet請求的響應。
語法:public virtual WebResponse GetResponse ()
說明:返回值包含對Internet請求的響應的WebResponse。
2.WebResponse類
WebResponse類提供來自統一資源標識符(URI)的響應,是一個abstract類。不能直接創建WebResponse對象,而需要通過對WebRequest實例調用GetResponse方法來進行創建。WebResponse類有一個GetResponseStream方法,當在子類中重寫時,此方法從Internet資源返回數據流。
語法:public virtual Stream GetResponseStream ()
說明:返回值是用於從Internet資源中讀取數據的Stream類的實例。
代碼示例如下:
private void FrmSource_Load(object sender, EventArgs e)
{
if (!url.StartsWith("http://") || url + "" == "" || url == "about:blank")
{
return;
}
WebRequest request = WebRequest.Create(url); //向指定地址的Internet發出請求
WebResponse response = request.GetResponse(); //獲取響應的實例
//創建一個文件讀取器
StreamReader myReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
this.rtxtShowSourceFile.Text = myReader.ReadToEnd();
response.Close(); //關閉文件流
}