当我添加 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”,但这不起作用
我没有使用过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 示例应用程序此处