HttpClientHandler 类

定义

.NET Framework 和 .NET Core 2.0 及更低版本中由 HttpClient 使用的默认消息处理程序。

public ref class HttpClientHandler : System::Net::Http::HttpMessageHandler
public class HttpClientHandler : System.Net.Http.HttpMessageHandler
type HttpClientHandler = class
    inherit HttpMessageHandler
Public Class HttpClientHandler
Inherits HttpMessageHandler
继承
HttpClientHandler
派生

示例

static async Task Main()
{
   // Create an HttpClientHandler object and set to use default credentials
   HttpClientHandler handler = new HttpClientHandler();
   handler.UseDefaultCredentials = true;

   // Create an HttpClient object
   HttpClient client = new HttpClient(handler);

   // Call asynchronous network methods in a try/catch block to handle exceptions
   try
   {
      HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");

      response.EnsureSuccessStatusCode();

      string responseBody = await response.Content.ReadAsStringAsync();
      Console.WriteLine(responseBody);
   }
   catch(HttpRequestException e)
   {
       Console.WriteLine("\nException Caught!");
       Console.WriteLine("Message :{0} ",e.Message);
   }

   // Need to call dispose on the HttpClient and HttpClientHandler objects
   // when done using them, so the app doesn't leak resources
   handler.Dispose();
   client.Dispose();
}

前面的代码示例使用 async Task Main() 入口点。 该功能需要 C# 7.1 或更高版本。

注解

HttpClientHandler 生自它的类和类使开发人员能够配置从代理到身份验证的各种选项。

.NET Core 中的 HttpClientHandler

从 .NET Core 2.1 开始,类的 HttpClientHandler 实现已更改为基于 类使用的 System.Net.Http.SocketsHttpHandler 跨平台 HTTP 协议堆栈。 在 .NET Core 2.1 之前, HttpClientHandler 类在 Windows 上使用较旧的 HTTP 协议堆栈 (WinHttpHandler ,在 CurlHandlerLinux) 上使用(在 Linux 的本机 libcurl 组件之上实现的内部类)。

仅在 .NET Core 2.1 - 3.1 上,可以通过以下三种方式之一将应用配置为使用较旧的 HTTP 协议堆栈:

  • AppContext.SetSwitch调用 方法:

    AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
    
    AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", False)
    
  • System.Net.Http.UseSocketsHttpHandler.netcore.runtimeconfig.json 配置文件中定义开关:

    "runtimeOptions": {
      "configProperties": {
          "System.Net.Http.UseSocketsHttpHandler": false
      }
    }
    
  • 定义名为 的 DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 环境变量,并将其设置为 false0

从 .NET 5 开始,这些配置选项不可用。

构造函数

HttpClientHandler()

创建 HttpClientHandler 类的实例。

属性

AllowAutoRedirect

获取或设置一个值,该值指示处理程序是否应跟随重定向响应。

AutomaticDecompression

获取或设置处理程序用于自动解压缩 HTTP 内容响应的解压缩方法类型。

CheckCertificateRevocationList

获取或设置一个值,该值指示是否根据证书颁发机构吊销列表检查证书。

ClientCertificateOptions

获取或设置一个值,该值指示是否从证书存储自动挑选证书,或者是否允许调用方通过特定的客户端证书。

ClientCertificates

获取与向服务器发出的请求关联的安全证书的集合。

CookieContainer

获取或设置用于通过处理程序存储服务器 Cookie 的 Cookie 容器。

Credentials

获取或设置此处理程序使用的身份验证信息。

DangerousAcceptAnyServerCertificateValidator

获取始终返回 true 的缓存委托。

DefaultProxyCredentials

使用默认(系统)代理时,获取或设置要提交到默认代理服务器进行身份验证的凭据。 只有在 UseProxy 设置为 trueProxy 设置为 null 时才使用默认代理。

MaxAutomaticRedirections

获取或设置处理程序遵循的重定向的最大数目。

MaxConnectionsPerServer

获取或设置使用 HttpClient 对象发出请求时允许的最大并发连接数(每个服务器终结点)。 请注意,该限制针对每个服务器终结点,例如,值为 256 表示允许 256 个到 http://www.adatum.com/ 的并发连接,以及另外 256 个到 http://www.adventure-works.com/ 的并发连接。

MaxRequestContentBufferSize

获取或设置处理程序使用的最大请求内容缓冲区大小。

MaxResponseHeadersLength

获取或设置响应标头的最大长度,以千字节(1024 字节)为单位。 例如,如果该值为 64,那么允许的最大响应标头长度为 65536 字节。

PreAuthenticate

获取或设置一个值,该值指示处理程序是否随请求发送授权标头。

Properties

获取 HttpClient 的自定义属性的可写字典(即地图)。 初始字典为空;可以为自定义处理程序和特殊处理插入和查询键值对。

Proxy

获取或设置处理程序使用的代理信息。

ServerCertificateCustomValidationCallback

获取或设置用于验证服务器证书的回调方法。

SslProtocols

获取或设置 HttpClientHandler 对象管理的 HttpClient 对象所用的 TLS/SSL 协议。

SupportsAutomaticDecompression

获取一个值,该值指示处理程序是否支持自动响应内容解压缩。

SupportsProxy

获取一个值,该值指示处理程序是否支持代理设置。

SupportsRedirectConfiguration

获取一个值,该值表示处理程序是否支持 AllowAutoRedirectMaxAutomaticRedirections 属性的配置设置。

UseCookies

获取或设置一个值,该值指示处理程序是否使用 CookieContainer 属性来存储服务器 Cookie 并在发送请求时使用这些 Cookie。

UseDefaultCredentials

获取或设置一个值,该值控制处理程序是否随请求一起发送默认凭据。

UseProxy

获取或设置一个值,该值表示处理程序是否对请求使用代理。

方法

Dispose()

释放由 HttpMessageHandler 使用的非托管资源和托管资源。

(继承自 HttpMessageHandler)
Dispose(Boolean)

释放由 HttpClientHandler 使用的非托管资源,并可根据需要释放托管资源。

Equals(Object)

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

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Send(HttpRequestMessage, CancellationToken)

基于 中HttpRequestMessage提供的信息创建 的HttpResponseMessage实例。

Send(HttpRequestMessage, CancellationToken)

在派生类中被重写时,发送带有指定请求和取消标记的 HTTP 请求。 否则,将引发 NotSupportedException

(继承自 HttpMessageHandler)
SendAsync(HttpRequestMessage, CancellationToken)

基于 中HttpRequestMessage提供的信息创建 的实例HttpResponseMessage,作为不会阻止的操作。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅