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 返回用于发送数据的对象。 和BeginGetRequestStreamEndGetRequestStream方法提供对发送数据流的异步访问。
若要进行 HttpWebRequest客户端身份验证,必须在当前用户的“我的证书存储”中安装客户端证书。
类 HttpWebRequest 在 WebException 访问资源时引发错误。 该 WebException.Status 属性包含一个 WebExceptionStatus 值,该值指示错误的源。 当是WebException.StatusWebExceptionStatus.ProtocolError时,该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 会自动注册。 在使用以或https://
开头http://
的 URI 之前,无需调用RegisterPrefix要注册System.Net.HttpWebRequest的方法。
本地计算机或应用程序配置文件可以指定使用默认代理。 如果指定了 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 w/ RC4 服务的互操作性。 本文 介绍如何修改代码,以便禁用新行为。
构造函数
HttpWebRequest() |
已过时。
已过时。
初始化 HttpWebRequest 类的新实例。 此构造函数已过时。 |
HttpWebRequest(SerializationInfo, StreamingContext) |
已过时。
已过时。
已过时。
已过时。
已过时。
从 HttpWebRequest 和 SerializationInfo 类的指定实例初始化 StreamingContext 类的新实例。 此构造函数已过时。 |
HttpWebRequest(Uri) |
属性
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。 |