WebClient和HttpWebRequest區別
阿新 • • 發佈:2019-02-16
繼承區別:
HttpWebRequest 派生自 WebRequest
HttpWebResponse 派生自 WebResponse
WebClient 派生自 Component
三個類的宣告如下:
[SerializableAttribute]
publicclass HttpWebRequest : WebRequest, ISerializable
[SerializableAttribute]
publicclass HttpWebResponse : WebResponse, ISerializable
[ComVisibleAttribute(true)]
publicclass 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使用者對是否自動url轉向的控制
WebClient不支援WebRequest支援(HttpWebRequest有AllowAutoRedirect屬性)