程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#利用WebClient和WebRequest獲取網頁源代碼的比較

c#利用WebClient和WebRequest獲取網頁源代碼的比較

編輯:C#入門知識

C#中一般是可以利用WebClient類和WebRequest類獲取網頁源代碼。下面分別說明這兩種方法的實現。
WebClient類獲取網頁源代碼
WebClient類
  WebClient類位於System.Net命名空間下,WebClient類提供向URI標識的任何本地、Intranet或Internet資源發送數據以及從這些資源接收數據的公共方法。
源代碼
///引用命名空間
using System.IO;
using System.Net;
using System.Text;
 
 
PageUrl = "http://www.webkaka.com"; //需要獲取源代碼的網頁
WebClient wc = new WebClient(); // 創建WebClient實例提供向URI 標識的資源發送數據和從URI 標識的資源接收數據
wc.Credentials = CredentialCache.DefaultCredentials; // 獲取或設置用於對向 Internet 資源的請求進行身份驗證的網絡憑據。
 
///方法一:
Encoding enc = Encoding.GetEncoding("GB2312"); // 如果是亂碼就改成 utf-8 / GB2312
Byte[] pageData = wc.DownloadData(PageUrl); // 從資源下載數據並返回字節數組。
ContentHtml.Text = enc.GetString(pageData); // 輸出字符串(HTML代碼),ContentHtml為Multiline模式的TextBox控件
 
/// 方法二:
/// ***************代碼開始**********
/// Stream resStream = wc.OpenRead(PageUrl); //以流的形式打開URL
/// Encoding enc = Encoding.GetEncoding("GB2312"); // 如果是亂碼就改成 utf-8 / GB2312
/// StreamReader sr = new StreamReader(resStream,enc); //以指定的編碼方式讀取數據流
/// ContentHtml.Text = sr.ReadToEnd(); //輸出(HTML代碼),ContentHtml為Multiline模式的TextBox控件
/// resStream.Close();
/// **************代碼結束********
///
wc.Dispose();
WebRequest類獲取網頁源代碼
WebRequest類
WebRequest類是.NET Framework中“請求/響應”模型的abstract基類,用於訪問Internet數據。使用WebRequest類請求/響應模型的應用程序可以用協議不可知的方式從Internet請求數據,在這種方式下,應用程序處理WebRequest類的實例,而協議特定的子類則執行請求的具體細節,請求從應用程序發送到某個特定的URI,如服務器上的網頁。URI從一個為應用程序注冊的WebRequest子類列表中確定要創建的適當子類。注冊WebRequest子類通常是為了處理某個特定的協議(如HTTP或FTP),但是也可以注冊它以處理對特定服務器或服務器上的路徑的請求。
WebRequest類中最常用的是Create方法,Create方法用於為指定的URI方案初始化新的WebRequest實例。
  語法:
public static WebRequest Create
(
  string requestUriString
)
  參數:
  requestUriString:標識Internet資源的URI。
  返回值:特定URI方案的WebRequest子類。
  注意:Create方法將運行時確定的WebRequest類的子類作為與requestUri最接近的注冊匹配項返回。例如,當以http://開頭的URI在requestUri中傳遞時,由Create返回一個HttpWebRequest。如果改為傳遞以file://開頭的URI,則Create方法將返回FileWebRequest實例。.NET Framework包括對http://和file:// URI方案的支持。
WebResponse類
  WebResponse類是abstract基類,協議特定的響應類從該抽象基類派生。應用程序可以使用 WebResponse類的實例以協議不可知的方式參與請求和響應事務,而從WebResponse類派生的協議特定的類攜帶請求的詳細信息。
  在WebResponse類中最常用的是GetResponse方法,GetResponse方法用於當在子類中被重寫時,返回對 Internet 請求的響應
  語法:
  public virtual WebResponse GetResponse ()
  返回值:包含對Internet請求的響應的WebResponse。
源代碼
///引用命名空間
using System.IO;
using System.Net;
using System.Text;
 
PageUrl = "http://www.BkJia.com "; //需要獲取源代碼的網頁
WebRequest request = WebRequest.Create(PageUrl); //WebRequest.Create方法,返回WebRequest的子類HttpWebRequest
WebResponse response = request.GetResponse(); //WebRequest.GetResponse方法,返回對 Internet 請求的響應
Stream resStream = response.GetResponseStream(); //WebResponse.GetResponseStream 方法,從 Internet 資源返回數據流。
Encoding enc = Encoding.GetEncoding("GB2312"); // 如果是亂碼就改成 utf-8 / GB2312
StreamReader sr = new StreamReader(resStream, enc); //命名空間:System.IO。 StreamReader 類實現一個 TextReader (TextReader類,表示可讀取連續字符系列的讀取器),使其以一種特定的編碼從字節流中讀取字符。
ContentHtml.Text = sr.ReadToEnd(); //輸出(HTML代碼),ContentHtml為Multiline模式的TextBox控件
resStream.Close();
sr.Close();

摘自 Shine的聖天堂-〃敏〃

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved