用 HttpClient 发送 POST 请求并提交 JSON 数据的核心是:创建复用的 HttpClient 实例、序列化对象为 UTF-8 编码的 application/json 格式 StringContent、调用 PostAsync 并检查 IsSuccessStatusCode。

用 HttpClient 发送 POST 请求并提交 JSON 数据,是 C# 中最常用、最推荐的方式。核心就三点:创建客户端、构造 JSON 内容、发起请求。
准备 JSON 数据并序列化
先用 System.Text.Json(.NET Core 3.0+ 推荐)或 Newtonsoft.Json 把对象转成 JSON 字符串,再包装成 StringContent:
示例:
var user = new { Name = "张三", Age = 25 };
var json = JsonSerializer.Serialize(user);
var content = new StringContent(json, Encoding.UTF8, "application/json");使用 HttpClient 发起 POST 请求
HttpClient 应该复用(全局单例或注入),不要每次 new。发送时调用 PostAsync:
- URL 必须是完整地址(含
http://或https://) - 响应需用
await response.Content.ReadAsStringAsync()读取结果 - 记得检查
response.IsSuccessStatusCode判断是否成功
示例:
using var client = new HttpClient();
var response = await client.PostAsync("https://api.example.com/users", content);
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}处理常见问题
实际开发中容易卡在这几个地方:
- 400 Bad Request:JSON 格式不对,或后端字段名/类型不匹配(注意大小写和命名策略)
- 401/403:缺认证头,用
client.DefaultRequestHeaders.Authorization添加 Token - 超时:通过
new HttpClient(new HttpClientHandler(), false) { Timeout = TimeSpan.FromSeconds(30) }设置 - SSL 证书错误(仅调试):自定义
HttpClientHandler.ServerCertificateCustomValidationCallback
完整可运行小例子
把上面整合起来,一个最小可用片段:
var data = new { Title = "测试文章", Content = "Hello World" };
var json = JsonSerializer.Serialize(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
using var client = new HttpClient();
var res = await client.PostAsync("https://www.php.cn/link/dc076eb055ef5f8a60a41b6195e9f329", content);
Console.WriteLine(await res.Content.ReadAsStringAsync());
基本上就这些。不复杂但容易忽略编码、复用和状态判断 —— 补上这三点,99% 的 POST 提交都稳了。










