HttpRequest 和HttpWebRequest的區別(轉)

費勁_奮進發表於2014-04-28

【1】問題:

asp.net C#  中HttpRequest 和HttpWebRequest的區別

HttpRequest 與HttpWebRequest 有什麼區別?

網上中文的帖子很多,但是答案基本是拷貝MSDN的。

這個比較扯淡,看了半天還是沒看出區別。

兩者都是Http請求。

我們先來看看網上的答案。

【2】網上中文答案:

System.Web.HttpRequest是封裝瀏覽器對伺服器的請求的,主要用在ASP.NET中,其中包括瀏覽器請求的網址,查詢字串資料或表單資料等等 

而System.Net.HttpWebRequest則是用來簡化網路請求的過程,從伺服器上獲取檔案/結果的,譬如你可以在程式碼中用這個類冒充瀏覽器(設定一個UserAgent)來發請求,處理迴應

第一:他們不是父子關係。   
  第二:Syste.Net.HttpWebRequest   類是System.Net.WebRequest抽象類的一個子類,它是   .NET   Framework   的用於訪問   Internet   資料的請求/響應模型的抽象基類。使用該請求/響應模型的應用程式可以用協議不可知的方式從   Internet   請求資料。在這種方式下,應用程式處理   WebRequest   類的例項,而協議特定的子類則執行請求的具體細節。   
  System.Net.HttpWebRequest   類和System.Net.FileWebRequest都繼承了WebRequest   
  1、FileWebRequest   類為使用   file://   方案來請求本地檔案的   URI   實現   WebRequest   抽象基類。   
  2、HttpWebRequest   類對   WebRequest   中定義的屬性和方法提供支援,也對使使用者能夠直接與使用   HTTP   的伺服器互動的附加屬性和方法提供支援。   
  第三:System.Web.HttpRequest   類使   ASP.NET   能夠讀取客戶端在   Web   請求期間傳送的   HTTP   值。HttpRequest   類的方法和屬性通過   HttpApplication、HttpContext、Page   和   UserControl   類的   Request   屬性公開。   
    
  所以使用System.Web.HttpRequest類的時候其實都是利用HttpApplication、HttpContext、Page   和   UserControl   類的   Request   屬性。而使用System.Net.HttpWebRequest類時是為了獲得一個Uri資源。自己建立。 

System.Web 名稱空間提供使得可以進行瀏覽器與伺服器通訊的類和介面。此名稱空間包括 HttpRequest 類(用於提供有關當前 HTTP 請求的廣泛資訊)、HttpResponse 類(用於管理對客戶端的 HTTP 輸出)以及 HttpServerUtility 類(用於提供對伺服器端實用工具與程式的訪問)。System.Web 還包括用於 Cookie 操作、檔案傳輸、異常資訊和輸出快取控制的類。 
System.Net 名稱空間為當前網路上使用的多種協議提供了簡單的程式設計介面。WebRequest 和 WebResponse 類形成了所謂的可插接式協議的基礎,可插接式協議是網路服務的一種實現,它使您能夠開發出使用 Internet 資源的應用程式,而不必考慮各種不同協議的具體細節。

【3】核心區別

 

     兩者看起來都是Http請求,只是前者需要在ASP。NET上下文中使用。

實際是不是這樣的?

 

其實這也只是表象,最根本的區別在於:

  • System.Web.HttpRequest:Incoming,進入請求,也就是客戶端訪問ASP.NET 網站進入時的請求。所以只能在ASP.NET應用程式上下文裡使用。
  • System.Net.HttpWebRequest:OutGoing,外發請求,可以發出一個HTTP請求,它可以乾的活,就比較多了,可以模擬一個獨立的客戶端,向網站傳送請求。

原文地址:http://www.54peixun.com/frankxulei/POST/0136f318384442858d1cce3a0f7ba986

相關文章