.NET 8 RestApi请求ContentType设置后变为null求助
问题解决:RestSharp中Content-Type头被置为null的问题
原因分析
在RestSharp中,当你通过AddParameter添加ParameterType.RequestBody类型的参数时,框架会自动管理Content-Type请求头。如果手动调用AddHeader设置该头,会和框架内部的处理逻辑冲突,导致手动设置的值被覆盖甚至置为null。
解决方案
方案1:移除手动添加的Content-Type头
直接保留AddParameter的媒体类型指定即可,框架会自动设置正确的Content-Type:
RestClient client = new RestClient(url); client.Timeout = -1; RestRequest request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer " + token); // 移除手动添加的Content-Type头,由AddParameter自动处理 request.AddParameter("application/json", requestBody, ParameterType.RequestBody); IRestResponse<T> response = await client.ExecuteAsync<T>(request);
方案2:使用RestSharp内置的JSON方法(推荐)
RestSharp提供了AddJsonBody方法,它会自动将对象序列化为JSON字符串,并设置正确的application/json Content-Type头,无需手动处理:
RestClient client = new RestClient(url); client.Timeout = -1; RestRequest request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer " + token); // 使用AddJsonBody自动完成序列化和Content-Type设置 request.AddJsonBody(requestBody); IRestResponse<T> response = await client.ExecuteAsync<T>(request);
内容的提问来源于stack exchange,提问作者Perturbator
相关产品推荐
相关产品推荐

