HttpClient 和 HttpRequestMessage - daniel-qa/C_Sharp GitHub Wiki
HttpClient 和 HttpRequestMessage
HttpClient
HttpClient 是 .NET Framework 和 .NET Core 中用于发送 HTTP 请求的强大类。它提供了一个简单而强大的 API,可以用来与 Web 服务进行通信。
以下是关于 HttpClient 的一些重要点:
- 创建实例:
HttpClient httpClient = new HttpClient();
- 发送请求:
HttpResponseMessage response = await httpClient.SendAsync(request);
使用 SendAsync 方法可以发送一个异步的 HTTP 请求,并且可以通过参数配置请求的细节,比如请求的类型(GET、POST 等)和内容(如果是 POST 请求)。
- 释放资源:
HttpClient 实现了 IDisposable 接口,因此应在使用完毕后通过 Dispose() 方法释放资源。通常建议使用完 HttpClient 后及时释放,或通过 using 语句块来确保资源正确释放。
HttpRequestMessage
HttpRequestMessage 表示一个 HTTP 请求消息,它包含了发送到服务器的所有信息,包括 URL、HTTP 方法、请求头、请求内容等。
以下是关于 HttpRequestMessage 的一些重要点:
- 创建实例:
var request = new HttpRequestMessage(HttpMethod.Get, url);
使用 new HttpRequestMessage(HttpMethod, string) 构造函数可以创建一个 HttpRequestMessage 实例。 第一个参数是 HttpMethod 枚举,指定请求的方法(GET、POST 等),第二个参数是请求的 URL。
- 配置请求:
HttpRequestMessage 允许你通过属性和方法来配置请求,比如添加请求头、设置请求内容(对于 POST 请求)、设置超时时间等。
- 发送请求:
HttpClient.SendAsync(request) 方法接受一个 HttpRequestMessage 参数,用来发送请求并返回一个 Task<HttpResponseMessage>,表示异步操作的结果。
- 释放资源:
虽然通常 HttpRequestMessage 不需要显式释放,但在一些高级场景下可能需要注意其生命周期和资源管理,尤其是在多次重用 HttpRequestMessage 实例时。
- 示例代码解释
var request = new HttpRequestMessage(HttpMethod.Get, url);
HttpResponseMessage response = _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken).Result;
response.EnsureSuccessStatusCode();
var request = new HttpRequestMessage(HttpMethod.Get, url); 创建一个 HTTP GET 请求消息,指定了请求的方法和 URL。
_httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken).Result; 使用 _httpClient 发送异步请求,并阻塞等待结果。
HttpCompletionOption.ResponseHeadersRead 表示仅在读取完响应头后就完成操作,不需要等待整个响应内容。
response.EnsureSuccessStatusCode(); 确保响应状态码表明请求成功,否则会抛出 HttpRequestException。
結論,HttpClient 和 HttpRequestMessage 是 C# 中用于发送和配置 HTTP 请求的核心组件,它们能够方便地与远程服务器通信并处理响应。