此资源不支持请求实体的媒体类型“text/plain”
Posted
技术标签:
【中文标题】此资源不支持请求实体的媒体类型“text/plain”【英文标题】:The request entity's media type 'text/plain' is not supported for this resource 【发布时间】:2017-07-05 08:01:52 【问题描述】:我正在编写一个带有 POST 请求的服务:
[HttpPost]
[ActionName("Post")]
public HttpResponseMessage Post([FromBody]string JStringCont)
....
对该服务的调用如下:
string jsonContent="[some json]"
StringContent content = new StringContent(jsonContent);
_oHttpClient = new HttpClient();
_oHttpClient.DefaultRequestHeaders.Accept.Clear();
_oHttpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
response = _oHttpClient.PostAsync(requestURI, content).Result;
服务显然是通过发送参数字符串内容来调用的。 我不能更改调用服务的方式。
我可以对服务本身进行更改。 POST 方法不能接受字符串格式。 我可以在接受字符串内容的 POST 请求中使用的参数是什么??
目前它给我错误:
响应:不支持的媒体类型
"Message":"该资源不支持请求实体的媒体类型'text/plain'。","ExceptionMessage":"没有MediaTypeFormatter可用于从具有媒体的内容中读取'String'类型的对象在 System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent 内容,类型类型,IEnumerable@ 987654323@1 格式化程序,IFormatterLogger formatterLogger,CancellationToken cancelToken)"
【问题讨论】:
你试过JsonResult吗? 尝试发送值为 application/json 的 Content-Type 标头? 我不允许触摸调用服务的代码。我想按照它被调用的方式进行服务 【参考方案1】:您应该允许JsonMediaTypeFormatter
使用Content-Type: text/plain
解析请求。所以在启动你的应用程序时(在Startup.cs
或WebApiConfig.cs
文件中)你需要 -
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
config 是 HttpConfiguration
对象。
【讨论】:
确实有帮助。谢谢。【参考方案2】:System.AggregateException:发生一个或多个错误。 ---> System.Net.Http.UnsupportedMediaTypeException:没有 MediaTypeFormatter 可用于从内容中读取“字符串”类型的对象 媒体类型“文本/纯文本”。
我在使用返回类型为字符串的 put
调用时遇到了错误,
我使用了putasync
,返回类型为任务字符串。
问题已解决,这应该也适合你
【讨论】:
以上是关于此资源不支持请求实体的媒体类型“text/plain”的主要内容,如果未能解决你的问题,请参考以下文章
将图像发布到 asp.net API 2 和 angular 2
解决了! - Spring boot:获取 415 不支持的媒体类型