最常用、推荐的 C# 调用 Web API 方式是 HttpClient,它轻量高效、支持异步;需复用实例而非每次 new,避免端口耗尽;正确设置超时、Header 和错误处理,善用 async/await。

用 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"));
string url = "https://www.php.cn/link/93a819cbd635bd1505ef0f804c21cc2a";
string responseJson = await client.GetStringAsync(url);
var users = JsonSerializer.Deserialize>(responseJson);
说明:GetStringAsync 自动读取响应体并返回字符串;也可用 GetAsync + ReadAsStringAsync 更灵活控制。
发送 POST 请求提交数据
传 JSON 数据到 API,注意设置 Content-Type 和序列化内容:
var user = new User { Name = "张三", Email = "zhang@example.com" };
var content = JsonContent.Create(user); // 自动设 Content-Type
var response = await client.PostAsync("https://www.php.cn/link/93a819cbd635bd1505ef0f804c21cc2a", content);
response.EnsureSuccessStatusCode(); // 抛异常如果状态码非 2xx
string result = await response.Content.ReadAsStringAsync();
处理错误与超时
网络请求不可靠,必须主动应对失败:
- 用 try-catch 捕获 HttpRequestException(网络、DNS、4xx/5xx 响应等)
- 设置 Timeout(单位:TimeSpan),避免请求无限挂起
- 检查 response.IsSuccessStatusCode 再读取内容,避免解析空/错误响应体
示例:
client.Timeout = TimeSpan.FromSeconds(10);try { var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { var data = await response.Content.ReadFromJsonAsync
(); } else { Console.WriteLine($"API 返回错误: {response.StatusCode}"); } } catch (HttpRequestException ex) { Console.WriteLine($"请求失败: {ex.Message}"); }
基本上就这些。用好 HttpClient 的关键是:复用实例、善用 async/await、主动处理异常和状态码。不复杂但容易忽略细节。










