.NET 8 RestApi 请求 ContentType 变为 null

问题描述 投票:0回答:1

当我添加 ContentType 标头来请求时,它变为 null 而不是 application/json。我可以在调试器中看到它。这是代码

RestClient client = new RestClient(url);
client.Timeout = -1;
RestRequest request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer " + token);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", requestBody, ParameterType.RequestBody);
IRestResponse<T> response = await client.ExecuteAsync<T>(request);

调试器图像

有什么建议吗?预先感谢

我尝试将“Content-Type”更改为“ContentType”,但这不起作用

c# .net api rest content-type
1个回答
0
投票

我没有使用过RestSharp,但查看文档似乎你不需要手动设置内容类型,它会自动设置。

文档指出:

当您调用 AddJsonBody 时,它会为您执行以下操作:

  • 指示RestClient将对象参数序列化为JSON 提出请求时
  • 将内容类型设置为 application/json
  • 将请求体的内部数据类型设置为DataType.Json

使用小型控制台应用程序从

AddParamter
更改为
AddJsonBody
可按预期设置请求中的内容类型。

RestClient client = new RestClient(url);
client.Timeout = -1;
RestRequest request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer " + "token");
request.AddJsonBody(requestBody); // Instead of AddParamter(...)
var response = client.ExecuteAsync(request).Result;

Console.WriteLine($"response.Request.Body.ContentType: {response.Request.Body.ContentType}");

请参阅 dotnedFiddle 示例应用程序此处

© www.soinside.com 2019 - 2024. All rights reserved.