C#怎么发送HTTP POST请求 C# HttpClient发送JSON数据方法

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

HttpClient
发送 POST 请求并提交 JSON 数据,是 C# 中最常用、最推荐的方式。核心就三点:创建客户端、构造 JSON 内容、发起请求。

准备 JSON 数据并序列化

先用

System.Text.Json
(.NET Core 3.0+ 推荐)或
Newtonsoft.Json
把对象转成 JSON 字符串,再包装成
StringContent

确保目标类型有公共属性(字段不参与序列化) 设置
MediaType
"application/json"
编码推荐用
Encoding.UTF8
,避免中文乱码

示例:

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");
<p>using var client = new HttpClient();
var res = await client.PostAsync("<a href="https://www.php.cn/link/dc076eb055ef5f8a60a41b6195e9f329">https://www.php.cn/link/dc076eb055ef5f8a60a41b6195e9f329</a>", content);
Console.WriteLine(await res.Content.ReadAsStringAsync());

基本上就这些。不复杂但容易忽略编码、复用和状态判断 —— 补上这三点,99% 的 POST 提交都稳了。

相关推荐