You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#项目中使用HttpClient发送JSON始终转为表单数据的问题

问题分析与解决方案

以下是可能导致请求以表单数据形式发送的原因及对应解决方法:

  • 未在StringContent创建时明确指定编码与内容类型
    你当前单独设置Content-Type的方式理论上可行,但部分场景下可能被默认配置覆盖。建议直接在创建StringContent时一并指定编码和内容类型,避免潜在的头信息冲突:

    var jsonString = JsonConvert.SerializeObject(workRequest);
    var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
    
  • 全局HttpClient配置干扰
    若你使用的是全局共享的HttpClient实例,之前的代码可能修改了默认请求头或添加了自定义DelegatingHandler,导致请求内容被篡改。排查时可尝试创建全新的HttpClient实例测试,或检查全局配置中是否有修改请求内容的逻辑。

  • JSON序列化异常
    验证JsonConvert.SerializeObject(workRequest)生成的字符串是否为有效JSON格式。若序列化结果存在格式错误(如未转义字符、属性缺失),可能导致服务端误判请求类型。

  • 实际请求头未正确设置
    通过抓包工具(如Fiddler)验证发送的请求是否真的携带了application/json的Content-Type头,同时确认请求体是否为JSON字符串。部分代理或框架可能会自动修改请求头,这时候需要针对性排查。

修正后的完整示例代码:

HttpClient client = new HttpClient();

WorkRequest workRequest = new WorkRequest()
{
   f1 = "asdf",
   // 补充其他属性赋值
};

var jsonString = JsonConvert.SerializeObject(workRequest);
var content = new StringContent(jsonString, Encoding.UTF8, "application/json");

await client.PostAsync(oxxoWorkflowAckUri, content);

内容的提问来源于stack exchange,提问作者user7395346

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:12:33