1. 程式人生 > >WebClient和HttpWebRequest區別

WebClient和HttpWebRequest區別

繼承區別:

  HttpWebRequest 派生自 WebRequest 
  HttpWebResponse 派生自 WebResponse 
  WebClient 派生自 Component
  三個類的宣告如下:
  [SerializableAttribute]
publicclass HttpWebRequest : WebRequest, ISerializable
  [SerializableAttribute]
publicclass HttpWebResponse : WebResponse, ISerializable
  [ComVisibleAttribute(true)]
public
class WebClient : Component
也就是說WebClient在繼承關係上和 HttpWebRequest沒有啥關係

功能區別:

1、WebRequest是 .NET Framework 的用於訪問 Internet 資料的請求/響應模型的抽象基類。使用該請求/響應模型的應用程式可以用協議不可知的方式從 Internet 請求資料,在這種方式下,應用程式處理 WebRequest 類的例項,而協議特定的子類則執行請求的具體細節,程式設計中使用的是子類HttpWebRequest
2、WebClient 類提供向 URI 標識的資源傳送資料和從 URI 標識的資源接收資料的公共方法,提供向 URI 標識的任何本地、Intranet 
或 Internet 資源傳送資料以及從這些資源接收資料的公共方法,WebClient 類使用 WebRequest 類提供對 Internet 資源的訪問
也就是說功能大致向同行,WebClient用來上傳或下載資料,WebRequest用來請求伺服器的監聽,WebResponse獲取伺服器端的響應

對COOKIE和SEIION支援區別

WebClient不具持續性,因此不支援cookie和session,具體說來就是,常見的管理系統中,一般都有登入頁和管理頁,在登陸頁輸入使用者名稱和密碼,在管理頁顯示登入頁輸入的使用者名稱,但是,WebClient實現不了這樣的效果,在第一次請求登入頁時,驗證成功之後,WebClient不會儲存http響應報文中的SetCookie,更不會設定下一次http請求報文的Cookie
,因此跳轉到管理頁後,在管理頁時接收不到存相應的cookie,因此,webclient更適用於多次請求沒有聯絡的請求,而
WebRequest則相反

使用者對是否自動url轉向的控制

WebClient不支援
WebRequest支援(HttpWebRequest有AllowAutoRedirect屬性)

對使用者代理伺服器的支援

WebClient不支援        WebRequest支援(HttpWebRequest有UserAgent屬性)更新中.....