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

C# HttpRequestMessage设置Content-Type无效,请求返回内容类型错误

解决方法

问题根源

你的代码存在几个关键问题:

  • 重复设置Authorization头:已经通过client.DefaultRequestHeaders.Authorization完成配置,没必要在HttpRequestMessage.Headers里重复添加。
  • 错误设置Content-Type头:Content-Type属于请求内容的专属头,不能直接加到HttpRequestMessage.Headers中,必须通过请求内容(比如StringContent)来指定。
  • 未指定StringContent的媒体类型:默认创建的StringContent会使用text/plain作为Content-Type,这就是服务器返回"Invalid content type (text/plain)"的直接原因。

正确代码示例

按照文档要求发送空JSON对象({})并正确配置Content-Type,修改后的代码如下:

var client = new HttpClient(handler);

string token = "...";
// 只需设置一次Authorization头
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", token);

var httpRequestMessage = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("..."),
    // 创建StringContent时明确指定媒体类型为application/json
    Content = new StringContent("{}", Encoding.UTF8, "application/json")
};

var response = await client.SendAsync(httpRequestMessage);
var contents = await response.Content.ReadAsStringAsync();

补充说明

  • 如果确实需要发送空请求体(而非空JSON对象),但服务器要求Content-Type为application/json,可使用以下写法:
    Content = new StringContent(string.Empty, Encoding.UTF8, "application/json")
    
    但根据你提到的文档要求,优先使用发送空JSON对象{}的写法。
  • 无需手动设置ContentLength头,HttpClient会自动根据内容长度计算并配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:03:12