首頁 > 軟體

C#中的HttpWebRequest類介紹

2022-01-15 13:01:22

提供 WebRequest 類的 HTTP 特定的實現。

繼承層次結構 System.Object → System.MarshalByRefObject →  System.Net.WebRequest →  System.Net.HttpWebRequest

名稱空間:System.Net ; 程式集:System(在 System.dll 中)

C#語法:

[SerializableAttribute]

public class HttpWebRequest : WebRequest, ISerializable

HttpWebRequest 型別公開以下成員。

1、建構函式

名稱說明
HttpWebRequest()已過時。初始化 HttpWebRequest 類的新範例。
HttpWebRequest(SerializationInfo, StreamingContext)已過時。從 SerializationInfo和 StreamingContext 類的指定範例初始化 HttpWebRequest 類的新範例。

2、屬性

名稱說明
Accept獲取或設定 Accept HTTP 檔頭的值。
Address獲取實際響應請求的 Internet 資源的統一資源識別符號 (URI)。
AllowAutoRedirect獲取或設定一個值,該值指示請求是否應跟隨重定向響應。
AllowReadStreamBuffering獲取或設定一個值,該值指示是否對從 Internet 資源接收的資料進行緩衝處理。
AllowWriteStreamBuffering獲取或設定一個值,該值指示是否對傳送到 Internet 資源的資料進行緩衝處理。
AuthenticationLevel獲取或設定用於此請求的身份驗證和模擬的級別。 (繼承自 WebRequest。)
AutomaticDecompression獲取或設定所使用的解壓縮型別。
CachePolicy獲取或設定此請求的快取策略。 (繼承自 WebRequest。)
ClientCertificates獲取或設定與此請求關聯的安全證書集合。
Connection獲取或設定 Connection HTTP 檔頭的值。
ConnectionGroupName獲取或設定請求的連線組的名稱。 (重寫 WebRequest.ConnectionGroupName。)
ContentLength獲取或設定 Content-lengthHTTP 檔頭。 (重寫 WebRequest.ContentLength。)
ContentType獲取或設定 Content-type HTTP 檔頭的值。 (重寫 WebRequest.ContentType。)
ContinueDelegate獲取或設定當從 Internet 資源接收到 HTTP 100 持續響應時呼叫的委託方法。
ContinueTimeout獲取或設定在接收到來自伺服器的 100 次連續響應之前要等待的超時(以毫秒為單位)。
CookieContainer獲取或設定與此請求關聯的 cookie。
CreatorInstance已過時。當在子類中重寫時,獲取從 IWebRequestCreate 類派生的工廠物件,該類用於建立為生成對指定 URI 的請求而範例化的 WebRequest。 (繼承自 WebRequest。)
Credentials獲取或設定請求的身份驗證資訊。 (重寫 WebRequest.Credentials。)
Date獲取或設定要在 HTTP 請求中使用的 Date HTTP 檔頭值。
DefaultCachePolicy獲取或設定此請求的預設快取策略。
DefaultMaximumErrorResponseLength獲取或設定 HTTP 錯誤響應的預設最大長度。
DefaultMaximumResponseHeadersLength獲取或設定 MaximumResponseHeadersLength 屬性的預設值。
Expect獲取或設定 Expect HTTP 檔頭的值。
HaveResponse獲取一個值,該值指示是否收到了來自 Internet 資源的響應。
Headers指定構成 HTTP 檔頭的名稱/值對的集合。 (重寫 WebRequest.Headers。)
Host獲取或設定要在 HTTP 請求中獨立於請求 URI 使用的 Host 檔頭值。
IfModifiedSince獲取或設定 If-Modified-Since HTTP 檔頭的值。
ImpersonationLevel獲取或設定當前請求的模擬級別。 (繼承自 WebRequest。)
KeepAlive獲取或設定一個值,該值指示是否與 Internet 資源建立永續性連線。
MaximumAutomaticRedirections獲取或設定請求將跟隨的重定向的最大數目。
MaximumResponseHeadersLength獲取或設定響應標題允許的最大長度。
MediaType獲取或設定請求的媒體型別。
Method獲取或設定請求的方法。 (重寫 WebRequest.Method。)
Pipelined獲取或設定一個值,該值指示是否通過管線將請求傳輸到 Internet 資源。
PreAuthenticate獲取或設定一個值,該值指示是否隨請求傳送一個身份驗證檔頭。 (重寫 WebRequest.PreAuthenticate。)
ProtocolVersion獲取或設定用於請求的 HTTP 版本。
Proxy獲取或設定請求的代理資訊。 (重寫 WebRequest.Proxy。)
ReadWriteTimeout獲取或設定寫入或讀取流時的超時(以毫秒為單位)。
Referer獲取或設定 Referer HTTP 檔頭的值。
RequestUri獲取請求的原始統一資源識別符號 (URI)。 (重寫 WebRequest.RequestUri。)
SendChunked獲取或設定一個值,該值指示是否將資料分段傳送到 Internet 資源。
ServerCertificateValidationCallback獲取或設定用於驗證伺服器證書的回撥函數。
ServicePoint獲取用於請求的服務點。
SupportsCookieContainer獲取一個值,該值指示請求是否為 CookieContainer 提供支援。
Timeout獲取或設定 GetResponse 和 GetRequestStream 方法的超時值(以毫秒為單位)。 (重寫 WebRequest.Timeout。)
TransferEncoding獲取或設定 Transfer-encoding HTTP 檔頭的值。
UnsafeAuthenticatedConnectionSharing獲取或設定一個值,該值指示是否允許經過高速 NTLM 身份驗證的連線共用。
UseDefaultCredentials獲取或設定一個 Boolean 值,該值控制預設憑據是否隨請求一起傳送。 (重寫 WebRequest.UseDefaultCredentials。)
UserAgent獲取或設定 User-agent HTTP 檔頭的值。

3、方法

名稱說明
Abort取消對 Internet 資源的請求。 (重寫 WebRequest.Abort()。)
AddRange(Int32)向請求新增從請求資料的開始處或結束處的特定範圍的位元組範圍檔頭。
AddRange(Int64)向請求新增從請求資料的開始處或結束處的特定範圍的位元組範圍檔頭。
AddRange(Int32, Int32)向請求新增指定範圍的位元組範圍檔頭。
AddRange(Int64, Int64)向請求新增指定範圍的位元組範圍檔頭。
AddRange(String, Int32)向請求新增從請求資料的開始處或結束處計算的特定範圍的 Range 檔頭。
AddRange(String, Int64)向請求新增從請求資料的開始處或結束處計算的特定範圍的 Range 檔頭。
AddRange(String, Int32, Int32)向請求新增指定範圍的範圍檔頭。
AddRange(String, Int64, Int64)向請求新增指定範圍的範圍檔頭。
BeginGetRequestStream開始對用來寫入資料的 Stream 物件的非同步請求。 (重寫 WebRequest.BeginGetRequestStream(AsyncCallback, Object)。)
BeginGetResponse開始對 Internet 資源的非同步請求。 (重寫 WebRequest.BeginGetResponse(AsyncCallback, Object)。)
CreateObjRef建立一個物件,該物件包含生成用於與遠端物件進行通訊的代理所需的全部相關資訊。 (繼承自 MarshalByRefObject。)
EndGetRequestStream(IAsyncResult)結束對用於寫入資料的 Stream 物件的非同步請求。 (重寫 WebRequest.EndGetRequestStream(IAsyncResult)。)
EndGetRequestStream(IAsyncResult,TransportContext)結束對用於寫入資料的 Stream 物件的非同步請求,並輸出與該流關聯的 TransportContext。
EndGetResponse結束對 Internet 資源的非同步請求。 (重寫 WebRequest.EndGetResponse(IAsyncResult)。)
Equals(Object)確定指定的物件是否等於當前物件。 (繼承自 Object。)
Finalize允許物件在“垃圾回收”回收之前嘗試釋放資源並執行其他清理操作。 (繼承自 Object。)
GetHashCode作為預設雜湊函數。 (繼承自 Object。)
GetLifetimeService檢索控制此範例的生存期策略的當前生存期服務物件。 (繼承自 MarshalByRefObject。)
GetObjectData基礎結構。使用序列化目標物件所需的資料填充 SerializationInfo。 (重寫 WebRequest.GetObjectData(SerializationInfo, StreamingContext)。)
GetRequestStream()獲取用於寫入請求資料的 Stream 物件。 (重寫 WebRequest.GetRequestStream()。)
GetRequestStream(TransportContext)獲取用於寫入請求資料的 Stream 物件,並輸出與該流關聯的 TransportContext。
GetRequestStreamAsync當在子類中被重寫時,將用於寫入資料的 Stream 作為非同步操作返回到 Internet 資源。 (繼承自 WebRequest。)
GetResponse返回來自 Internet 資源的響應。 (重寫 WebRequest.GetResponse()。)
GetResponseAsync當在子類中被重寫時,將作為非同步操作返回對 Internet 請求的響應。 (繼承自 WebRequest。)
GetType獲取當前範例的 Type。 (繼承自 Object。)
InitializeLifetimeService獲取控制此範例的生存期策略的生存期服務物件。 (繼承自 MarshalByRefObject。)
MemberwiseClone()建立當前 Object 的淺表副本。 (繼承自 Object。)
MemberwiseClone(Boolean)建立當前 MarshalByRefObject 物件的淺表副本。 (繼承自 MarshalByRefObject。)
ToString返回表示當前物件的字串。 (繼承自 Object。)

4、顯示介面實現

名稱說明
ISerializable.GetObjectData基礎結構。使用將目標物件序列化所需的資料填充 SerializationInfo。

5、備註

HttpWebRequest類對WebRequest中定義的屬性和方法提供支援,也對使使用者能夠直接與使用 HTTP 的伺服器互動的附加屬性和方法提供支援。

不要使用HttpWebRequest 建構函式。使用 WebRequest.Create方法初始化新的 HttpWebRequest 物件。如果統一資源識別符號 (URI) 的方案是 http:// 或 https://,則 Create 返回 HttpWebRequest 物件。 

GetResponse方法向RequestUri屬性中指定的資源發出同步請求並返回包含該響應的HttpWebResponse。可以使用 BeginGetResponse 和 EndGetResponse 方法對資源發出非同步請求。 

當要向資源傳送資料時,GetRequestStream 方法返回用於傳送資料的 Stream 物件。BeginGetRequestStream和EndGetRequestStream方法提供對傳送資料流的非同步存取。 

對於使用 HttpWebRequest 的使用者端驗證身份,使用者端證書必須安裝在當前使用者的“我的證書”儲存區中。

如果在存取資源時發生錯誤,則 HttpWebRequest 類將引發 WebException。WebException.Status 屬性包含指示錯誤源的 WebExceptionStatus 值。  當 WebException.Status 為 WebExceptionStatus.ProtocolError 時,Response 屬性包含從資源接收的 HttpWebResponse。 

HttpWebRequest將傳送到 Internet 資源的公共 HTTP 檔頭值公開為屬性,由方法或系統設定;下表包含完整列表。可以將 Headers 屬性中的其他檔頭設定為名稱/值對。注意,伺服器和快取在請求期間可能會更改或新增檔頭。 

下表列出了由屬性或方法設定或由系統設定的 HTTP 檔頭。

Header

設定方

Accept

由 Accept 屬性設定。

Connection

由 Connection 屬性和 KeepAlive 屬性設定。

Content-Length

由 ContentLength 屬性設定。

Content-Type

由 ContentType 屬性設定。

Expect

由 Expect 屬性設定。

日期

由系統設定為當前日期。

主機

由系統設定為當前主機資訊。

If-Modified-Since

由 IfModifiedSince 屬性設定。

範圍

由 AddRange 方法設定。

Referer

由 Referer 屬性設定。

Transfer-Encoding

由 TransferEncoding 屬性設定(SendChunked 屬性必須為 true)。

User-Agent

由 UserAgent 屬性設定。

說明

HttpWebRequest   自動註冊。  使用以 http:// 或 https:// 開頭的 URI 之前,不需要呼叫 RegisterPrefix 方法來註冊 System.Net.HttpWebRequest。 

本地計算機或應用程式組態檔可能指定使用預設代理。  如果指定了 Proxy 屬性,則 Proxy 屬性中的代理設定會重寫本地計算機或應用程式組態檔,並且 HttpWebRequest 範例將實用指定的代理設定。  如果組態檔中未指定代理並且未指定 Proxy 屬性,則 HttpWebRequest 類使用從本地計算機上的 Internet Explorer 中繼承的代理設定。  如果 Internet Explorer 中沒有代理設定,請求會直接傳送到伺服器。

HttpWebRequest   類分析從 Internet Explorer 繼承的且包含萬用字元的代理忽略列表時會與 Internet Explorer 直接分析忽略列表不同。  例如,HttpWebRequest 類將來自 Internet Explorer 的其中包含“nt*”的忽略列表分析為正規表示式“nt.$”。  此行為不同於 Internet Explorer 的本機行為。  因此 URL“http://intxxxxx”將忽略使用 HttpWebRequest 類的代理,但它不會忽略使用 Internet Explorer 的代理。 

說明

Framework 在建立 SSL 對談時快取這些對談,如果可能,還嘗試對新請求重用快取的對談。  嘗試重用 SSL 對談時,該框架將使用 ClientCertificates 的第一個元素(如果有);如果 ClientCertificates 為空,則將嘗試重用匿名對談。 

說明

為安全起見,預設情況下禁用 Cookie。  如果您希望使用 Cookie,請使用 CookieContainer 屬性啟用 Cookie。 

範例

下面的程式碼範例為 URI http://www.contoso.com/. 建立 HttpWebRequest。

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://www.contoso.com/"); 

到此這篇關於C#中的HttpWebRequest類介紹的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com