REST错误-请求包含实体主体,但不包含Content-Type标头。推断的媒体类型application / octet-stream不支持此资源

时间:2018-11-28 08:57:33

标签: c# rest asp.net-web-api postman

我正在尝试发送POST请求。 通过POSTMAN发送时一切正常,然后我尝试通过C#代码发送它:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

var client = new RestClient(MY-URL);
var request = new RestRequest(Method.POST);
request.Credentials = new System.Net.NetworkCredential(ServerUsername, Password);
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", My JSON Data, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

我收到此错误:

  

该请求包含一个实体主体,但没有Content-Type头。此资源不支持推断的媒体类型“ application / octet-stream”

我该如何解决?

2 个答案:

答案 0 :(得分:2)

将参数添加为正文会更改请求的内容类型。

在您的示例中

request.AddParameter("undefined", My JSON Data, ParameterType.RequestBody);

覆盖先前设置的内容类型。

如果要序列化要发送的对象模型,则将request.AddParameter替换为

request.AddJsonBody(model);

将序列化并包含适当的标头信息

否则,添加参数时需要包括类型

request.AddParameter("application/json", "My JSON Data", ParameterType.RequestBody);

答案 1 :(得分:1)

尝试写作:

Content-Type: application/json; charset=UTF-8"

或添加到标题:

Accept: application/json