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
继承
属性
实现

示例

下面的代码示例为 URI http://www.contoso.com/创建 HttpWebRequest

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 公开发送到 Internet 资源的常见 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 将自动注册。 在使用以 或 开头的 http:// URI 之前,无需调用 RegisterPrefix 方法进行注册System.Net.HttpWebRequesthttps://

本地计算机或应用程序配置文件可以指定使用默认代理。 如果指定了 Proxy 属性,则 属性中的代理设置 Proxy 将替代本地计算机或应用程序配置文件, HttpWebRequest 并且实例将使用指定的代理设置。 如果未在配置文件中指定代理, Proxy 并且未指定 属性,则 HttpWebRequest 类将使用从本地计算机上的 Internet Explorer 继承的代理设置。 如果 Internet Explorer 中没有代理设置,则请求将直接发送到服务器。

HttpWebRequest 分析代理绕过列表,其通配符继承自 Internet Explorer 的方式不同于 Internet Explorer 直接分析的绕过列表。 例如, HttpWebRequest 类将分析 Internet Explorer 中“nt*”的绕过列表作为“nt.$”的正则表达式。 这与 Internet Explorer 的本机行为不同。 因此,“”http://intxxxxx的 URL 将使用 类绕过代理 HttpWebRequest ,但不会使用 Internet Explorer 绕过代理。

注意

框架在创建 SSL 会话时缓存这些会话,并尝试为新请求重复使用缓存的会话(如果可能)。 尝试重用 SSL 会话时,如果存在一个) ,框架将使用 (的第一个元素 ClientCertificates ;如果 ClientCertificates 为空,则尝试重用匿名会话。

注意

出于安全原因,默认情况下会禁用 Cookie。 如果要使用 Cookie,请使用 CookieContainer 属性来启用 Cookie。

.NET Framework 4.6 包含一项新的安全功能,可阻止不安全的加密和哈希算法进行连接。 默认情况下,通过 HTTPClient、HttpWebRequest、FTPClient、SmtpClient、SslStream 等 API 使用 TLS/SSL 并面向 .NET Framework 4.6 的应用程序会获得更安全的行为。

开发人员可能需要选择退出此行为,以保持与其现有 SSL3 服务或 TLS(含 RC4 服务)的互操作性。 本文 介绍如何修改代码,以便禁用新行为。

构造函数

HttpWebRequest()
已过时.
已过时.

初始化 HttpWebRequest 类的新实例。 此构造函数已过时。

HttpWebRequest(SerializationInfo, StreamingContext)
已过时.
已过时.
已过时.
已过时.

HttpWebRequestSerializationInfo 类的指定实例初始化 StreamingContext 类的新实例。 此构造函数已过时。

属性

Accept

获取或设置 Accept HTTP 标头的值。

Address

获取实际响应请求的 Internet 资源的统一资源标识符 (URI)。

AllowAutoRedirect

获取或设置一个值,该值指示请求是否应跟随重定向响应。

AllowReadStreamBuffering

获取或设置一个值,该值指示是否对从 Internet 资源接收的数据进行缓冲处理。

AllowWriteStreamBuffering

获取或设置一个值,该值指示是否对发送到 Internet 资源的数据进行缓冲处理。

AuthenticationLevel

获取或设置用于此请求的身份验证和模拟的级别。

(继承自 WebRequest)
AutomaticDecompression

获取或设置所使用的解压缩类型。

CachePolicy

获取或设置此请求的缓存策略。

(继承自 WebRequest)
ClientCertificates

获取或设置与此请求关联的安全证书集合。

Connection

获取或设置 Connection HTTP 标头的值。

ConnectionGroupName

获取或设置请求的连接组的名称。

ConnectionGroupName

当在子类中重写时,获取或设置请求的连接组的名称。

(继承自 WebRequest)
ContentLength

获取或设置 Content-length HTTP 标头。

ContentLength

当在子类中被重写时,获取或设置所发送的请求数据的内容长度。

(继承自 WebRequest)
ContentType

获取或设置 Content-type HTTP 标头的值。

ContinueDelegate

获取或设置当从 Internet 资源接收到 HTTP 100-continue 响应时调用的委托方法。

ContinueTimeout

获取或设置在接收到来自服务器的 100-Continue 之前要等待的超时(以毫秒为单位)。

CookieContainer

获取或设置与此请求关联的 Cookie。

CreatorInstance
已过时.

当在子类中重写时,获取从 IWebRequestCreate 类派生的工厂对象,该类用于创建为生成对指定 URI 的请求而实例化的 WebRequest

(继承自 WebRequest)
Credentials

获取或设置请求的身份验证信息。

Date

获取或设置要在 HTTP 请求中使用的 Date HTTP 标头值。

DefaultCachePolicy

获取或设置此请求的默认缓存策略。

DefaultMaximumErrorResponseLength

获取或设置 HTTP 错误响应的默认最大长度。

DefaultMaximumResponseHeadersLength

获取或设置 MaximumResponseHeadersLength 属性的默认值。

Expect

获取或设置 Expect HTTP 标头的值。

HaveResponse

获取一个值,该值指示是否收到了来自 Internet 资源的响应。

Headers

指定构成 HTTP 标头的名称/值对的集合。

Host

获取或设置要在 HTTP 请求中独立于请求 URI 使用的 Host 标头值。

IfModifiedSince

获取或设置 If-Modified-Since HTTP 标头的值。

ImpersonationLevel

获取或设置当前请求的模拟级别。

(继承自 WebRequest)
KeepAlive

获取或设置一个值,该值指示是否与 Internet 资源建立持续型连接。

MaximumAutomaticRedirections

获取或设置请求将跟随的重定向的最大数目。

MaximumResponseHeadersLength

获取或设置响应标头允许的最大长度。

MediaType

获取或设置请求的媒体类型。

Method

获取或设置请求的方法。

Pipelined

获取或设置一个值,该值指示是否通过管线将请求传输到 Internet 资源。

PreAuthenticate

获取或设置一个值,该值指示是否随请求发送一个 Authorization 标头。

PreAuthenticate

当在子类中被重写时,指示是否对请求进行预身份验证。

(继承自 WebRequest)
ProtocolVersion

获取或设置用于请求的 HTTP 版本。

Proxy

获取或设置请求的代理信息。

Proxy

当在子类中被重写时,获取或设置用于访问此 Internet 资源的网络代理。

(继承自 WebRequest)
ReadWriteTimeout

获取或设置写入或读取流时的超时(以毫秒为单位)。

Referer

获取或设置 Referer HTTP 标头的值。

RequestUri

获取请求的原始统一资源标识符 (URI)。

SendChunked

获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源。

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()

取消对 Internet 资源的请求。

AddRange(Int32)

向请求添加从请求数据的开始处或结束处的特定范围的字节范围标头。

AddRange(Int32, Int32)

向请求添加指定范围的字节范围标头。

AddRange(Int64)

向请求添加从请求数据的开始处或结束处的特定范围的字节范围标头。

AddRange(Int64, Int64)

向请求添加指定范围的字节范围标头。

AddRange(String, Int32)

向请求添加从请求数据的开始处或结束处计算的特定范围的 Range 标头。

AddRange(String, Int32, Int32)

向请求添加指定范围的范围标头。

AddRange(String, Int64)

向请求添加从请求数据的开始处或结束处计算的特定范围的 Range 标头。

AddRange(String, Int64, Int64)

向请求添加指定范围的范围标头。

BeginGetRequestStream(AsyncCallback, Object)

开始对用于写入数据的 Stream 对象执行异步请求。

BeginGetResponse(AsyncCallback, Object)

开始对 Internet 资源的异步请求。

CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject)
EndGetRequestStream(IAsyncResult)

结束对用来写入数据的 Stream 对象的异步请求。

EndGetRequestStream(IAsyncResult, TransportContext)

结束对用于写入数据的 Stream 对象的异步请求,并输出与该流关联的 TransportContext

EndGetResponse(IAsyncResult)

结束对 Internet 资源的异步请求。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

返回 WebRequest 实例的哈希值。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetLifetimeService()
已过时.

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)
已过时.
已过时.
已过时.

使用序列化目标对象时所需的数据填充 SerializationInfo

GetObjectData(SerializationInfo, StreamingContext)
已过时.

使用将目标对象序列化所需的数据填充 SerializationInfo

(继承自 WebRequest)
GetRequestStream()

获取用于写入请求数据的 Stream 对象。

GetRequestStream()

当在子类中重写时,返回用于将数据写入 Internet 资源的 Stream

(继承自 WebRequest)
GetRequestStream(TransportContext)

获取用于写入请求数据的 Stream 对象,并输出与流关联的 TransportContext

GetRequestStreamAsync()

当在子类中被重写时,将用于写入数据的 Stream 作为异步操作返回到 Internet 资源。

(继承自 WebRequest)
GetResponse()

返回来自 Internet 资源的响应。

GetResponse()

当在子类中被重写时,返回对 Internet 请求的响应。

(继承自 WebRequest)
GetResponseAsync()

当在子代类中被重写时,将作为异步操作返回对 Internet 请求的响应。

(继承自 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)

设置要用于遥测的传出请求的元数据。

适用于

另请参阅