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
- 继承
- 继承
- 属性
- 实现
示例
下面的代码示例为 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 用于发送数据的对象。 BeginGetRequestStream和 EndGetRequestStream 方法提供对发送数据流的异步访问。
对于使用 HttpWebRequest的客户端身份验证,客户端证书必须安装在当前用户的“我的证书”存储中。
当 HttpWebRequest 访问资源时出错时,类会 WebException 引发 。 属性 WebException.Status 包含一个 WebExceptionStatus 值,该值指示错误的来源。 当 为 WebExceptionStatus.ProtocolError时WebException.Status,属性Response包含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.HttpWebRequest。https://
本地计算机或应用程序配置文件可以指定使用默认代理。 如果指定了 Proxy 属性,则 属性中的 Proxy 代理设置将替代本地计算机或应用程序配置文件, HttpWebRequest 实例将使用指定的代理设置。 如果未在配置文件中指定代理, Proxy 并且属性未指定,则 HttpWebRequest 类将使用从本地计算机上的 Internet 选项继承的代理设置。 如果 Internet 选项中没有代理设置,则请求将直接发送到服务器。
注意
框架在创建 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) |
已过时.
已过时.
已过时.
已过时.
从 HttpWebRequest 和 SerializationInfo 类的指定实例初始化 StreamingContext 类的新实例。 此构造函数已过时。 |
属性
Accept |
获取或设置 |
Address |
获取实际响应请求的 Internet 资源的统一资源标识符 (URI)。 |
AllowAutoRedirect |
获取或设置一个值,该值指示请求是否应跟随重定向响应。 |
AllowReadStreamBuffering |
获取或设置一个值,该值指示是否对从 Internet 资源接收的数据进行缓冲处理。 |
AllowWriteStreamBuffering |
获取或设置一个值,该值指示是否对发送到 Internet 资源的数据进行缓冲处理。 |
AuthenticationLevel |
获取或设置用于此请求的身份验证和模拟的级别。 (继承自 WebRequest) |
AutomaticDecompression |
获取或设置所使用的解压缩类型。 |
CachePolicy |
获取或设置此请求的缓存策略。 (继承自 WebRequest) |
ClientCertificates |
获取或设置与此请求关联的安全证书集合。 |
Connection |
获取或设置 |
ConnectionGroupName |
获取或设置请求的连接组的名称。 |
ConnectionGroupName |
当在子类中重写时,获取或设置请求的连接组的名称。 (继承自 WebRequest) |
ContentLength |
获取或设置 |
ContentLength |
当在子类中被重写时,获取或设置所发送的请求数据的内容长度。 (继承自 WebRequest) |
ContentType |
获取或设置 |
ContinueDelegate |
获取或设置当从 Internet 资源接收到 HTTP 100-continue 响应时调用的委托方法。 |
ContinueTimeout |
获取或设置在接收到来自服务器的 100-Continue 之前要等待的超时(以毫秒为单位)。 |
CookieContainer |
获取或设置与此请求关联的 Cookie。 |
CreatorInstance |
已过时.
当在子类中重写时,获取从 IWebRequestCreate 类派生的工厂对象,该类用于创建为生成对指定 URI 的请求而实例化的 WebRequest。 (继承自 WebRequest) |
Credentials |
获取或设置请求的身份验证信息。 |
Date |
获取或设置要在 HTTP 请求中使用的 |
DefaultCachePolicy |
获取或设置此请求的默认缓存策略。 |
DefaultMaximumErrorResponseLength |
获取或设置 HTTP 错误响应的默认最大长度。 |
DefaultMaximumResponseHeadersLength |
获取或设置 MaximumResponseHeadersLength 属性的默认值。 |
Expect |
获取或设置 |
HaveResponse |
获取一个值,该值指示是否收到了来自 Internet 资源的响应。 |
Headers |
指定构成 HTTP 标头的名称/值对的集合。 |
Host |
获取或设置要在 HTTP 请求中独立于请求 URI 使用的 Host 标头值。 |
IfModifiedSince |
获取或设置 |
ImpersonationLevel |
获取或设置当前请求的模拟级别。 (继承自 WebRequest) |
KeepAlive |
获取或设置一个值,该值指示是否与 Internet 资源建立持续型连接。 |
MaximumAutomaticRedirections |
获取或设置请求将跟随的重定向的最大数目。 |
MaximumResponseHeadersLength |
获取或设置响应标头允许的最大长度。 |
MediaType |
获取或设置请求的媒体类型。 |
Method |
获取或设置请求的方法。 |
Pipelined |
获取或设置一个值,该值指示是否通过管线将请求传输到 Internet 资源。 |
PreAuthenticate |
获取或设置一个值,该值指示是否随请求发送一个 Authorization 标头。 |
PreAuthenticate |
当在子类中被重写时,指示是否对请求进行预身份验证。 (继承自 WebRequest) |
ProtocolVersion |
获取或设置用于请求的 HTTP 版本。 |
Proxy |
获取或设置请求的代理信息。 |
Proxy |
当在子类中被重写时,获取或设置用于访问此 Internet 资源的网络代理。 (继承自 WebRequest) |
ReadWriteTimeout |
获取或设置写入或读取流时的超时(以毫秒为单位)。 |
Referer |
获取或设置 |
RequestUri |
获取请求的原始统一资源标识符 (URI)。 |
SendChunked |
获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源。 |
ServerCertificateValidationCallback |
获取或设置用于验证服务器证书的回调函数。 |
ServicePoint |
获取用于请求的服务点。 |
SupportsCookieContainer |
获取指示请求是否为 CookieContainer 提供支持的值。 |
Timeout |
获取或设置 GetResponse() 和 GetRequestStream() 方法的超时值(以毫秒为单位)。 |
Timeout |
获取或设置请求超时之前的时间长度(以毫秒为单位)。 (继承自 WebRequest) |
TransferEncoding |
获取或设置 |
UnsafeAuthenticatedConnectionSharing |
获取或设置一个值,该值指示是否允许经过高速 NTLM 身份验证的连接共享。 |
UseDefaultCredentials |
获取或设置一个 Boolean 值,该值控制是否随请求一起发送默认凭据。 |
UseDefaultCredentials |
当在子代类中重写时,获取或设置一个 Boolean 值,该值控制 DefaultCredentials 是否随请求一起发送。 (继承自 WebRequest) |
UserAgent |
获取或设置 |
方法
显式接口实现
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
已过时.
已过时.
已过时.
使用将目标对象序列化所需的数据填充 SerializationInfo。 |
扩展方法
GetRequestMetadata(HttpWebRequest) |
获取要用于遥测的传出请求的元数据。 |
SetRequestMetadata(HttpWebRequest, RequestMetadata) |
设置要用于遥测的传出请求的元数据。 |
适用于
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈