C# 之 HttpWebRequest類


      提供 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.StatusWebExceptionStatus.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/");




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM