解决MySql布尔型新旧版本兼容问题,采用枚举来表示布尔型的数据表。由正向工程赋值
大石头 authored at 2018-05-15 21:21:05
2.18 KiB
X
# HttpClient 增强处理器 ## 概述 `NewLife.Http` 命名空间提供了两个 `HttpClientHandler` 增强处理器,分别用于自定义 DNS 解析(`DnsHttpHandler`)和 APM 链路追踪(`HttpTraceHandler`)。它们通过 `DelegatingHandler` 机制嵌入 `HttpClient` 的请求管道。 **命名空间**:`NewLife.Http` --- ## DnsHttpHandler — DNS 解析处理器 实现自定义域名解析与多 IP 轮询的 `HttpClient` 处理器。 ### 核心特性 - **自定义 DNS**:通过 `IDnsResolver` 接口实现本地解析 - **多 IP 轮询**:每次请求从解析的多个 IP 中轮询选择 - **Host 头保留**:将原始域名保留在 `Host` 请求头中 ### 快速开始 ```csharp using NewLife.Http; using NewLife.Net; // 自定义解析器 class MyResolver : IDnsResolver { public IPAddress[]? Resolve(String host) { if (host == "myapi.internal") return [IPAddress.Parse("10.0.0.1"), IPAddress.Parse("10.0.0.2")]; return null; } } // 创建 HttpClient var handler = new DnsHttpHandler(new HttpClientHandler()) { Resolver = new MyResolver(), }; var client = new HttpClient(handler); var html = await client.GetStringAsync("http://myapi.internal/status"); ``` > ⚠️ HTTPS 注意事项:替换为 IP 后可能导致 TLS 证书校验失败,需确保服务器证书允许通过 IP 访问或禁用证书校验。 --- ## HttpTraceHandler — APM 追踪处理器 为 `HttpClient` 请求添加链路追踪(APM)能力的处理器。 ### 核心特性 - **自动埋点**:每次 HTTP 请求自动创建 `ISpan` 追踪 - **异常过滤**:可配置 `ExceptionFilter` 仅记录指定异常 - **去重保护**:自动检测父级埋点,避免重复追踪 ### 快速开始 ```csharp using NewLife.Http; using NewLife.Log; // 创建追踪 HttpClient var tracer = new DefaultTracer { ... }; var handler = new HttpTraceHandler(new HttpClientHandler()) { Tracer = tracer, }; var client = new HttpClient(handler); // 所有请求自动埋点 var html = await client.GetStringAsync("https://newlifex.com"); ``` ### 与 ApiHttpClient 配合 `ApiHttpClient` 内置 APM 追踪,`HttpTraceHandler` 适用于直接使用 `HttpClient` 的场景。