HttpClient的用法

2026-01-29 11:49:59 / 法国直播世界杯

HttpClient 是 .NET 平台上用于发出 HTTP 请求和处理响应的常用工具。它提供了异步友好的代码编写方式,并且可以配置各种选项以满足不同的需求。

创建 HttpClient 实例

在大多数情况下,建议在应用程序的生命周期内重复使用同一个 HttpClient 实例。可以通过以下方式创建一个 HttpClient 实例:

代码语言:txt复制private static HttpClient sharedClient = new()

{

BaseAddress = new Uri("https://jsonplaceholder.typicode.com"),

};

上述代码创建了一个 HttpClient 实例,并将其基地址设置为

代码语言:txt复制https://jsonplaceholder.typicode.com

发出 HTTP 请求

HttpClient 提供了多种方法来发出不同类型的 HTTP 请求,如 GET、POST、PUT、DELETE 等1。以下是一些常见的用法:

GET 请求

GET 请求用于从服务器检索数据。可以使用 HttpClient.GetAsync 方法发出 GET 请求:

代码语言:csharp复制static async Task GetAsync(HttpClient httpClient)

{

using HttpResponseMessage response = await httpClient.GetAsync("todos/3");

response.EnsureSuccessStatusCode().WriteRequestToConsole();

var jsonResponse = await response.Content.ReadAsStringAsync();

Console.WriteLine($"{jsonResponse}\n");

}

POST 请求

POST 请求用于向服务器发送数据。可以使用 HttpClient.PostAsync 方法发出 POST 请求:

代码语言:csharp复制static async Task PostAsync(HttpClient httpClient)

{

using StringContent jsonContent = new(

JsonSerializer.Serialize(new { userId = 77, id = 1, title = "write code sample", completed = false }),

Encoding.UTF8,

"application/json");

using HttpResponseMessage response = await httpClient.PostAsync("todos", jsonContent);

response.EnsureSuccessStatusCode().WriteRequestToConsole();

var jsonResponse = await response.Content.ReadAsStringAsync();

Console.WriteLine($"{jsonResponse}\n");

}

处理 HTTP 响应

每当处理 HTTP 响应时,都需要与 HttpResponseMessage 类型进行交互。可以通过 HttpResponseMessage.StatusCode 属性获取 HTTP 状态代码,并使用 HttpResponseMessage.Content 属性访问响应正文。

代码语言:csharp复制using HttpResponseMessage response = await httpClient.SendAsync(request);

if (response.IsSuccessStatusCode)

{

string responseString = await response.Content.ReadAsStringAsync();

Console.WriteLine(responseString);

}

错误处理

当 HTTP 请求失败时,会引发HttpRequestException。可以捕获该异常并处理相应的错误

代码语言:txt复制

try

{

using var response = await httpClient.GetAsync("http://localhost:5001/doesNotExist");

response.EnsureSuccessStatusCode();

}

catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound)

{

Console.WriteLine($"Not found: {ex.Message}");

}通过以上方式,可以使用 HttpClient 发出各种 HTTP 请求,并处理响应和错误。HttpClient 提供了丰富的配置选项,可以根据具体需求进行调整