C#怎么调用Web API C# HttpClient使用方法

来源:这里教程网 时间:2026-02-21 17:39:58 作者:

用 C# 调用 Web API,最常用、推荐的方式就是 HttpClient。它轻量、高效、支持异步,是 .NET 中发起 HTTP 请求的标准工具。

创建并复用 HttpClient 实例

HttpClient 不是“一次性的”,设计上就该被重用(不是每次请求都 new 一个)。频繁创建会引发端口耗尽等问题。

推荐在类级别或应用生命周期内声明一个静态或单例的 HttpClient 实例 不要在 using 语句里包裹 HttpClient(会导致连接过早关闭) 如需自定义配置(如超时、默认 Header),可通过 HttpClientHandler 或直接设置属性

发送 GET 请求获取数据

最常见场景:从 API 拉取 JSON 数据。

var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
<p>string url = "<a href="https://www.php.cn/link/93a819cbd635bd1505ef0f804c21cc2a">https://www.php.cn/link/93a819cbd635bd1505ef0f804c21cc2a</a>";
string responseJson = await client.GetStringAsync(url);
var users = JsonSerializer.Deserialize<List<User>>(responseJson);

说明:GetStringAsync 自动读取响应体并返回字符串;也可用 GetAsync + ReadAsStringAsync 更灵活控制。

发送 POST 请求提交数据

传 JSON 数据到 API,注意设置 Content-Type 和序列化内容:

用 JsonContent(.NET 5+ 推荐)或 StringContent + 手动序列化 确保 API 端能正确解析 application/json
var user = new User { Name = "张三", Email = "zhang@example.com" };
var content = JsonContent.Create(user); // 自动设 Content-Type
<p>var response = await client.PostAsync("<a href="https://www.php.cn/link/93a819cbd635bd1505ef0f804c21cc2a">https://www.php.cn/link/93a819cbd635bd1505ef0f804c21cc2a</a>", content);
response.EnsureSuccessStatusCode(); // 抛异常如果状态码非 2xx</p><p>string result = await response.Content.ReadAsStringAsync();

处理错误与超时

网络请求不可靠,必须主动应对失败:

用 try-catch 捕获 HttpRequestException(网络、DNS、4xx/5xx 响应等) 设置 Timeout(单位:TimeSpan),避免请求无限挂起 检查 response.IsSuccessStatusCode 再读取内容,避免解析空/错误响应体

示例:

client.Timeout = TimeSpan.FromSeconds(10);
<p>try {
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode) {
var data = await response.Content.ReadFromJsonAsync<ApiResponse>();
} else {
Console.WriteLine($"API 返回错误: {response.StatusCode}");
}
}
catch (HttpRequestException ex) {
Console.WriteLine($"请求失败: {ex.Message}");
}

基本上就这些。用好 HttpClient 的关键是:复用实例、善用 async/await、主动处理异常和状态码。不复杂但容易忽略细节。

相关推荐