HttpWebRequest 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供 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 為 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 傳回物件來傳送資料。 BeginGetRequestStream和 EndGetRequestStream 方法會提供傳送資料流程的非同步存取。
若要使用 HttpWebRequest 進行用戶端驗證,用戶端憑證必須安裝在目前使用者的 [我的憑證存放區] 中。
類別 HttpWebRequest 會在存取資源時發生錯誤時擲回 WebException 。 屬性 WebException.Status 包含值 WebExceptionStatus ,指出錯誤的來源。 當 為 WebExceptionStatus.ProtocolError 時 WebException.Status ,屬性 Response 會 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 方法,才能使用開頭為 或 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 類別的新執行個體,這個執行個體是來自 SerializationInfo 和 StreamingContext 類別的指定執行個體。 此建構函式已經過時。 |
HttpWebRequest(Uri) |
屬性
Accept |
取得或設定 |
Address |
取得實際回應要求的網際網路資源統一資源識別元 (URI)。 |
AllowAutoRedirect |
取得或設定值,這個值指出要求是否應該緊接在重新導向回應之後。 |
AllowReadStreamBuffering |
取得或設定值,這個值表示是否要緩衝處理從網際網路資源接收的資料。 |
AllowWriteStreamBuffering |
取得或設定值,指出是否要緩衝傳送至網際網路資源的資料。 |
AuthenticationLevel |
取得或設定值,指出用於這個要求的驗證和模擬等級。 (繼承來源 WebRequest) |
AutomaticDecompression |
取得或設定使用的解壓縮類型。 |
CachePolicy |
取得或設定這個要求的快取原則。 (繼承來源 WebRequest) |
ClientCertificates |
取得或設定與這個要求關聯的安全憑證集合。 |
Connection |
取得或設定 |
ConnectionGroupName |
取得或設定要求的連線群組名稱。 |
ConnectionGroupName |
在子代類別中覆寫時,取得或設定要求的連接群組名稱。 (繼承來源 WebRequest) |
ContentLength |
取得或設定 |
ContentLength |
在子代類別中覆寫時,取得或設定正在傳送要求資料的內容長度。 (繼承來源 WebRequest) |
ContentType |
取得或設定 |
ContinueDelegate |
取得或設定從網際網路資源接收 HTTP 100-continue 回應時所呼叫的委派 (Delegate) 方法。 |
ContinueTimeout |
取得或設定要在收到伺服器的 100-Continue 以前等候的逾時 (以毫秒為單位)。 |
CookieContainer |
取得或設定與要求相關的 Cookie。 |
CreatorInstance |
已過時。
在子代類別中覆寫時,取得衍生自 IWebRequestCreate 類別的 Factory 物件,用來建立執行個體化的 WebRequest 以對指定的 URI 提出要求。 (繼承來源 WebRequest) |
Credentials |
取得或設定要求的驗證資訊。 |
Date |
取得或設定要用於 HTTP 要求中的 |
DefaultCachePolicy |
取得或設定這個要求的預設快取原則。 |
DefaultMaximumErrorResponseLength |
取得或設定 HTTP 錯誤回應的預設最大長度。 |
DefaultMaximumResponseHeadersLength |
取得或設定 MaximumResponseHeadersLength 屬性的預設值。 |
Expect |
取得或設定 |
HaveResponse |
取得值,指出是否已經接收到來自網際網路資源的回應。 |
Headers |
指定組成 HTTP 標頭的名稱/值組集合。 |
Host |
取得或設定 Host 標頭值,以用在獨立於要求 URI 的 HTTP 要求中。 |
IfModifiedSince |
取得或設定 |
ImpersonationLevel |
取得或設定目前要求的模擬等級。 (繼承來源 WebRequest) |
KeepAlive |
取得或設定值,指出是否要與網際網路資源建立持續連線。 |
MaximumAutomaticRedirections |
取得或設定要求追蹤的最大重新導向數目。 |
MaximumResponseHeadersLength |
取得或設定回應標頭的最大允許長度。 |
MediaType |
取得或設定要求的媒體類型。 |
Method |
取得或設定要求的方法。 |
Pipelined |
取得或設定值,指出是否將要求導送至網際網路資源。 |
PreAuthenticate |
取得或設定值,指出是否隨著要求傳送授權標頭。 |
PreAuthenticate |
在子代類別中覆寫時,指出是否要預先驗證要求。 (繼承來源 WebRequest) |
ProtocolVersion |
取得或設定要求所使用的 HTTP 版本。 |
Proxy |
取得或設定要求的 Proxy 資訊。 |
Proxy |
在子代類別中覆寫時,取得或設定要用來存取這個網際網路資源的網路 Proxy。 (繼承來源 WebRequest) |
ReadWriteTimeout |
取得或設定寫入或讀取資料流時的逾時 (以毫秒為單位)。 |
Referer |
取得或設定 |
RequestUri |
取得要求的原始統一資源識別元 (URI)。 |
SendChunked |
取得或設定值,指出是否要分區段傳送資料至網際網路資源。 |
ServerCertificateValidationCallback |
取得或設定用來驗證伺服器憑證的回呼函式。 |
ServicePoint |
取得要為要求使用的服務點。 |
SupportsCookieContainer |
取得值,指出要求是否提供對 CookieContainer 的支援。 |
Timeout |
取得或設定 GetResponse() 和 GetRequestStream() 方法的逾時值 (以毫秒為單位)。 |
Timeout |
取得或設定要求逾時之前的時間長度 (以毫秒為單位)。 (繼承來源 WebRequest) |
TransferEncoding |
取得或設定 |
UnsafeAuthenticatedConnectionSharing |
取得或設定值,指出是否允許高速 NTLM 驗證連線共用。 |
UseDefaultCredentials |
取得或設定 Boolean 值,控制是否隨著要求傳送預設認證。 |
UseDefaultCredentials |
在子代類別中覆寫時,取得或設定 Boolean 值,控制 DefaultCredentials 是否隨著要求傳送。 (繼承來源 WebRequest) |
UserAgent |
取得或設定 |
方法
明確介面實作
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
已過時。
已過時。
已過時。
將序列化目標物件所需的資料填入 SerializationInfo。 |