HttpWebRequest 類別

定義

提供 WebRequest 類別的 HTTP 特定實作。

public ref class HttpWebRequest : System::Net::WebRequest
public ref class HttpWebRequest : System::Net::WebRequest, System::Runtime::Serialization::ISerializable
public class HttpWebRequest : System.Net.WebRequest
public class HttpWebRequest : System.Net.WebRequest, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class HttpWebRequest : System.Net.WebRequest, System.Runtime.Serialization.ISerializable
type HttpWebRequest = class
    inherit WebRequest
type HttpWebRequest = class
    inherit WebRequest
    interface ISerializable
[<System.Serializable>]
type HttpWebRequest = class
    inherit WebRequest
    interface ISerializable
Public Class HttpWebRequest
Inherits WebRequest
Public Class HttpWebRequest
Inherits WebRequest
Implements ISerializable
繼承
HttpWebRequest
繼承
屬性
實作

範例

下列程式代碼範例會 HttpWebRequest 建立 URI http://www.contoso.com/的 。

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

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

Dim myReq As HttpWebRequest = _
    WebRequest.Create("http://www.contoso.com/")

備註

重要

我們不建議您 HttpWebRequest 用於新的開發。 請改用 類別 System.Net.Http.HttpClient

類別 HttpWebRequest 支援 中 WebRequest 定義的屬性和方法,以及可讓使用者使用 HTTP 直接與伺服器互動的其他屬性和方法。

請勿使用 建構函 HttpWebRequest 式。 WebRequest.Create使用方法來初始化新的 HttpWebRequest 物件。 如果統一資源標識碼 (URI 的配置) 為 http://https://Create 則會傳 HttpWebRequest 回 物件。

方法 GetResponse 會對 屬性中指定的 RequestUri 資源發出同步要求,並傳回 HttpWebResponse 包含回應物件的 。 您可以使用 所 GetResponseStream傳回的數據流來接收回應數據。 如果回應物件或回應數據流已關閉,則會遺失剩餘的數據。 如果下列條件保留,則會清空剩餘的數據,而且在關閉回應對象或數據流時,套接字將會重新用於後續要求:這是保持運作或管線要求,只需要接收少量的數據,或剩餘的數據會以小時間間隔接收。 如果未超過上述條件保留或清空時間,將會關閉套接字。 針對保持連線或管線連線,強烈建議應用程式讀取串流,直到 EOF 為止。 這可確保套接字將重新用於後續要求,進而產生更佳的效能和較少使用的資源。

當您想要將數據傳送至資源時, GetRequestStream 方法會 Stream 傳回物件以用來傳送數據。 BeginGetRequestStreamEndGetRequestStream 方法會提供傳送數據流的異步存取。

若要使用 進行 HttpWebRequest客戶端驗證,用戶端憑證必須安裝在目前使用者的 [我的證書存儲] 中。

類別 HttpWebRequest 會在 WebException 存取資源時發生錯誤時擲回 。 WebException.Status屬性包含值WebExceptionStatus,指出錯誤的來源。 當 為 WebExceptionStatus.ProtocolErrorWebException.StatusResponse屬性會HttpWebResponse包含從資源接收的 。

HttpWebRequest 會公開傳送至因特網資源的通用 HTTP 標頭值做為屬性、依方法設定,或由系統設定;下表包含完整清單。 您可以將屬性中的其他 Headers 標頭設定為名稱/值組。 請注意,伺服器和快取可能會在要求期間變更或新增標頭。

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

標頭 設定者
Accept Accept 屬性設定。
Connection Connection 屬性、 KeepAlive 屬性設定。
Content-Length ContentLength 屬性設定。
Content-Type ContentType 屬性設定。
Expect Expect 屬性設定。
Date 由系統設定為目前日期。
Host 由系統設定為目前的主機資訊。
If-Modified-Since IfModifiedSince 屬性設定。
Range AddRange 方法設定。
Referer Referer 屬性設定。
Transfer-Encoding TransferEncoding 屬性設定 (SendChunked 屬性必須 true) 。
User-Agent UserAgent 屬性設定。

注意

HttpWebRequest 會自動註冊。 您不需要先呼叫 RegisterPrefix 方法來註冊 System.Net.HttpWebRequest ,再使用開頭為 http://https://的 URI。

本機電腦或應用程式組態檔可能會指定要使用的預設 Proxy。 Proxy如果指定 屬性,則 屬性中的 Proxy Proxy 設定會覆寫本機計算機或應用程式組態檔,而 HttpWebRequest 實例會使用指定的 Proxy 設定。 如果在組態檔中未指定任何 Proxy,而且 Proxy 未指定 屬性,則 HttpWebRequest 類別會使用繼承自本機電腦上的 Internet Explorer 的 Proxy 設定。 如果 Internet Explorer 中沒有 Proxy 設定,則會將要求直接傳送至伺服器。

類別會 HttpWebRequest 剖析 Proxy 略過清單,其通配符繼承自 Internet Explorer 的方式與略過清單不同,由 Internet Explorer 直接剖析。 例如,類別 HttpWebRequest 會剖析 Internet Explorer 中 “nt*” 的略過清單,作為 “nt.$” 的正則表達式。 這與 Internet Explorer 的原生行為不同。 因此,“http://intxxxxx” 的 URL 會使用 HttpWebRequest 類別略過 Proxy,但不會使用 Internet Explorer 略過 Proxy。

注意

架構會在建立 SSL 工作階段時進行快取,並盡可能嘗試重複使用新要求的快取工作階段。 嘗試重複使用 SSL 會話時,如果有一個) ,則 Framework 會使用 (的第一 ClientCertificates 個專案,或在 空白時嘗試重複使用匿名會話 ClientCertificates

注意

基於安全性考慮,預設會停用 Cookie。 如果您想要使用 Cookie,請使用 CookieContainer 屬性來啟用 Cookie。

.NET Framework 4.6 包含新的安全性功能,可封鎖不安全的加密和連線哈希演算法。 透過 HTTPClient、HttpWebRequest、FTPClient、SmtpClient、SslStream 等 API 使用 TLS/SSL 的應用程式,預設會取得更安全的行為 .NET Framework 4.6。

開發人員可能會想要退出退出此行為,以維持其現有 SSL3 服務或 TLS w/ RC4 服務的互操作性。 本文 說明如何修改程序代碼,以便停用新的行為。

建構函式

HttpWebRequest()
已淘汰.
已淘汰.

初始化 HttpWebRequest 類別的新執行個體。 此建構函式已經過時。

HttpWebRequest(SerializationInfo, StreamingContext)
已淘汰.
已淘汰.
已淘汰.
已淘汰.

初始化 HttpWebRequest 類別的新執行個體,這個執行個體是來自 SerializationInfoStreamingContext 類別的指定執行個體。 此建構函式已經過時。

屬性

Accept

取得或設定 Accept HTTP 標頭的值。

Address

取得實際回應要求的網際網路資源統一資源識別元 (URI)。

AllowAutoRedirect

取得或設定值,這個值指出要求是否應該緊接在重新導向回應之後。

AllowReadStreamBuffering

取得或設定值,這個值表示是否要緩衝處理從網際網路資源接收的資料。

AllowWriteStreamBuffering

取得或設定值,指出是否要緩衝傳送至網際網路資源的資料。

AuthenticationLevel

取得或設定值,指出用於這個要求的驗證和模擬等級。

(繼承來源 WebRequest)
AutomaticDecompression

取得或設定使用的解壓縮類型。

CachePolicy

取得或設定這個要求的快取原則。

(繼承來源 WebRequest)
ClientCertificates

取得或設定與這個要求關聯的安全憑證集合。

Connection

取得或設定 Connection HTTP 標頭的值。

ConnectionGroupName

取得或設定要求的連線群組名稱。

ConnectionGroupName

在子代類別中覆寫時,取得或設定要求的連接群組名稱。

(繼承來源 WebRequest)
ContentLength

取得或設定 Content-length HTTP 標頭。

ContentLength

在子代類別中覆寫時,取得或設定正在傳送要求資料的內容長度。

(繼承來源 WebRequest)
ContentType

取得或設定 Content-type HTTP 標頭的值。

ContinueDelegate

取得或設定從網際網路資源接收 HTTP 100-continue 回應時所呼叫的委派 (Delegate) 方法。

ContinueTimeout

取得或設定要在收到伺服器的 100-Continue 以前等候的逾時 (以毫秒為單位)。

CookieContainer

取得或設定與要求相關的 Cookie。

CreatorInstance
已淘汰.

在子代類別中覆寫時,取得衍生自 IWebRequestCreate 類別的 Factory 物件,用來建立執行個體化的 WebRequest 以對指定的 URI 提出要求。

(繼承來源 WebRequest)
Credentials

取得或設定要求的驗證資訊。

Date

取得或設定要用於 HTTP 要求中的 Date HTTP 標頭值。

DefaultCachePolicy

取得或設定這個要求的預設快取原則。

DefaultMaximumErrorResponseLength

取得或設定 HTTP 錯誤回應的預設最大長度。

DefaultMaximumResponseHeadersLength

取得或設定 MaximumResponseHeadersLength 屬性的預設值。

Expect

取得或設定 Expect HTTP 標頭的值。

HaveResponse

取得值,指出是否已經接收到來自網際網路資源的回應。

Headers

指定組成 HTTP 標頭的名稱/值組集合。

Host

取得或設定 Host 標頭值,以用在獨立於要求 URI 的 HTTP 要求中。

IfModifiedSince

取得或設定 If-Modified-Since HTTP 標頭的值。

ImpersonationLevel

取得或設定目前要求的模擬等級。

(繼承來源 WebRequest)
KeepAlive

取得或設定值,指出是否要與網際網路資源建立持續連線。

MaximumAutomaticRedirections

取得或設定要求追蹤的最大重新導向數目。

MaximumResponseHeadersLength

取得或設定回應標頭的最大允許長度。

MediaType

取得或設定要求的媒體類型。

Method

取得或設定要求的方法。

Pipelined

取得或設定值,指出是否將要求導送至網際網路資源。

PreAuthenticate

取得或設定值,指出是否隨著要求傳送授權標頭。

PreAuthenticate

在子代類別中覆寫時,指出是否要預先驗證要求。

(繼承來源 WebRequest)
ProtocolVersion

取得或設定要求所使用的 HTTP 版本。

Proxy

取得或設定要求的 Proxy 資訊。

Proxy

在子代類別中覆寫時,取得或設定要用來存取這個網際網路資源的網路 Proxy。

(繼承來源 WebRequest)
ReadWriteTimeout

取得或設定寫入或讀取資料流時的逾時 (以毫秒為單位)。

Referer

取得或設定 Referer HTTP 標頭的值。

RequestUri

取得要求的原始統一資源識別元 (URI)。

SendChunked

取得或設定值,指出是否要分區段傳送資料至網際網路資源。

ServerCertificateValidationCallback

取得或設定用來驗證伺服器憑證的回呼函式。

ServicePoint

取得要為要求使用的服務點。

SupportsCookieContainer

取得值,指出要求是否提供對 CookieContainer 的支援。

Timeout

取得或設定 GetResponse()GetRequestStream() 方法的逾時值 (以毫秒為單位)。

Timeout

取得或設定要求逾時之前的時間長度 (以毫秒為單位)。

(繼承來源 WebRequest)
TransferEncoding

取得或設定 Transfer-encoding HTTP 標頭的值。

UnsafeAuthenticatedConnectionSharing

取得或設定值,指出是否允許高速 NTLM 驗證連線共用。

UseDefaultCredentials

取得或設定 Boolean 值,控制是否隨著要求傳送預設認證。

UseDefaultCredentials

在子代類別中覆寫時,取得或設定 Boolean 值,控制 DefaultCredentials 是否隨著要求傳送。

(繼承來源 WebRequest)
UserAgent

取得或設定 User-agent HTTP 標頭的值。

方法

Abort()

取消對網際網路資源的要求。

AddRange(Int32)

針對從已要求資料的起始或結尾的特定範圍,將位元組範圍標頭加入至要求。

AddRange(Int32, Int32)

將位元組範圍標頭加入至指定範圍的要求。

AddRange(Int64)

針對從已要求資料的起始或結尾的特定範圍,將位元組範圍標頭加入至要求。

AddRange(Int64, Int64)

將位元組範圍標頭加入至指定範圍的要求。

AddRange(String, Int32)

針對從已要求資料的起始或結尾的特定範圍,將範圍標頭加入至要求。

AddRange(String, Int32, Int32)

將範圍標頭加入至指定範圍的要求。

AddRange(String, Int64)

針對從已要求資料的起始或結尾的特定範圍,將範圍標頭加入至要求。

AddRange(String, Int64, Int64)

將範圍標頭加入至指定範圍的要求。

BeginGetRequestStream(AsyncCallback, Object)

開始用以寫入資料之 Stream 物件的非同步要求。

BeginGetResponse(AsyncCallback, Object)

開始對網際網路資源的非同步要求。

CreateObjRef(Type)

建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。

(繼承來源 MarshalByRefObject)
EndGetRequestStream(IAsyncResult)

結束用來寫入資料之 Stream 物件的非同步要求。

EndGetRequestStream(IAsyncResult, TransportContext)

結束 Stream 物件的非同步要求,此物件是用來寫入資料和輸出資料流相關聯的 TransportContext

EndGetResponse(IAsyncResult)

結束對網際網路資源的非同步要求。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

傳回 WebRequest 執行個體的雜湊值。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)
已淘汰.
已淘汰.
已淘汰.

將序列化目標物件的所需資料填入 SerializationInfo

GetObjectData(SerializationInfo, StreamingContext)
已淘汰.

將序列化目標物件所需的資料填入 SerializationInfo

(繼承來源 WebRequest)
GetRequestStream()

取得用來寫入要求資料的 Stream 物件。

GetRequestStream()

在子代類別中覆寫時,傳回 Stream,以便將資料寫入至網際網路資源。

(繼承來源 WebRequest)
GetRequestStream(TransportContext)

取得 Stream 物件,此物件是用來寫入要求資料和輸出資料流相關聯的 TransportContext

GetRequestStreamAsync()

在子代類別中覆寫時,傳回以非同步作業方式將資料寫入網際網路資源的 Stream

(繼承來源 WebRequest)
GetResponse()

傳回來自網際網路資源的回應。

GetResponse()

在子代類別中覆寫時,傳回對網際網路要求的回應。

(繼承來源 WebRequest)
GetResponseAsync()

在子代類別中覆寫時,傳回對網際網路要求的回應,做為非同步作業。

(繼承來源 WebRequest)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個執行個體的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 物件的淺層複本。

(繼承來源 MarshalByRefObject)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

明確介面實作

ISerializable.GetObjectData(SerializationInfo, StreamingContext)
已淘汰.
已淘汰.
已淘汰.

將序列化目標物件所需的資料填入 SerializationInfo

擴充方法

GetRequestMetadata(HttpWebRequest)

取得要用於遙測用途之傳出要求的元數據。

SetRequestMetadata(HttpWebRequest, RequestMetadata)

設定要用於遙測用途之傳出要求的元數據。

適用於

另請參閱