HttpClient 是 .NET 平台上用于发出 HTTP 请求和处理响应的常用工具。它提供了异步友好的代码编写方式,并且可以配置各种选项以满足不同的需求。
创建 HttpClient 实例
在大多数情况下,建议在应用程序的生命周期内重复使用同一个 HttpClient 实例。可以通过以下方式创建一个 HttpClient 实例:
private static HttpClient sharedClient = new()
{
BaseAddress = new Uri("https://jsonplaceholder.typicode.com"),
};
上述代码创建了一个 HttpClient 实例,并将其基地址设置为
https://jsonplaceholder.typicode.com
发出 HTTP 请求
HttpClient 提供了多种方法来发出不同类型的 HTTP 请求,如 GET、POST、PUT、DELETE 等1。以下是一些常见的用法:
GET 请求
GET 请求用于从服务器检索数据。可以使用 HttpClient.GetAsync 方法发出 GET 请求:
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 请求:
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 属性访问响应正文。
using HttpResponseMessage response = await httpClient.SendAsync(request);
if (response.IsSuccessStatusCode)
{
string responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
}
错误处理
当 HTTP 请求失败时,会引发HttpRequestException。可以捕获该异常并处理相应的错误
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 提供了丰富的配置选项,可以根据具体需求进行调整
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。