当前位置: 首页 > 知识库问答 >
问题:

REST错误请求包含实体正文但没有内容类型标头。推断的媒体类型应用程序/八位字节流不支持此资源

全鸿晖
2023-03-14

我试图发送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标头。此资源不支持推断的媒体类型应用程序/八位流

我怎样才能解决它?

共有3个答案

宗政学
2023-03-14

在我的例子中,我使用的是提琴手,不知何故,我有一个额外的回车,我在提琴手中看不到。

小提琴手在我的便签本上展示了这个:

POST https://mywebsite/?api-version=7.3 HTTP/1.1
AnotherHeader: 2413OL

但是粘贴到NoDepad后,我看到了这个:

POST https://mywebsite/?api-version=7.3 HTTP/1.1

AnotherHeader: 2413OL

在移除记事本中额外的回车,然后粘贴回小提琴手的刮擦垫后,一切都很好,415状态代码也不见了。

孟昆
2023-03-14

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

在你的例子中

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

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

如果您正在序列化要发送的对象模型,则替换请求。使用添加参数

request.AddJsonBody(model);

它将序列化并包括适当的标题信息

否则,在添加参数时需要包括type

request.AddParameter("application/json", "My JSON Data", ParameterType.RequestBody);
毋弘光
2023-03-14

试着写:

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

或添加到标题中:

Accept: application/json
 类似资料: