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.Status ,屬性 ResponseHttpWebResponse 包含從資源接收的 。

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 方法,才能使用開頭為 或 https://http:// URI 進行註冊 System.Net.HttpWebRequest

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

類別會 HttpWebRequest 剖析具有繼承自 Internet Explorer 之萬用字元的 Proxy 略過清單,與 Internet Explorer 直接剖析略過清單不同。 例如,類別 HttpWebRequest 會從 Internet Explorer 剖析 「nt*」 的略過清單,作為 「nt.$」 的正則運算式。 這與 Internet Explorer 的原生行為不同。 因此,「 http://intxxxxx 」 的 URL 會使用 HttpWebRequest 類別略過 Proxy,但不會略過使用 Internet Explorer 的 Proxy。

注意

架構會在建立 SSL 會話時快取 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 類別的指定執行個體。 此建構函式已經過時。

HttpWebRequest(Uri)

屬性

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

適用於

另請參閱