我正在尝试发送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”
我该如何解决?
答案 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