触摸HttpRequestMessage内容时出现ASP.NET 415不支持的媒体类型错误



我为我的ASP.NET Web API创建了一个消息处理程序,我想读取HttpRequestMessage内容,进行一些修改,然后在传递之前将其设置为修改后的内容。但是,即使没有进行修改,这也会导致415不支持的媒体类型错误。此代码再现了问题:

HttpRequestMessage request = (input to handler)
String body = request.Content.ReadAsStringAsync().Result;
request.Content = new StringContent(body);

如何在不出现415错误的情况下触摸HttpRequestMessage内容?我知道内容应该读一次,但我正在用新内容替换它。是否有需要重置的读取标志?

我在另一个问题上找到了这个被忽视的答案:https://stackoverflow.com/a/20262394/2852699

这是我的示例的修改代码。

HttpRequestMessage request = (input to handler)
MediaTypeHeaderValue contentType = request.Content.Headers.ContentType;
String body = request.Content.ReadAsStringAsync().Result;
(modify body here)
request.Content = new StringContent(body);
request.Content.Headers.ContentType = contentType;

这使我可以在不引起任何错误的情况下阅读、修改然后编写内容。StringContent的默认ContentType为"text/plain;charset=utf-8",而我所需要的ContentType是"application/json;charset=utf-8"。

在向api发布任何数据时,请确保发送内容类型和标题,如下所示:内容类型:application/json;charset=UTF-8;

这里,发送的数据是json格式和UTF-8格式。

API需要了解数据类型和数据格式,以便将其转换为适当的数据类型。

最新更新