Ответ 1
В запросе HTTP вам необходимо установить Content-Type в: Content-Type: application/json
Итак, если вы используете клиент fiddler, добавьте Content-Type: application/json
в заголовок запроса
Я создаю веб-сервис с помощью Web API. Я выполнил простой класс
public class ActivityResult
{
public String code;
public int indexValue;
public int primaryCodeReference;
}
И затем я реализовал внутри своего контроллера
[HttpPost]
public HttpResponseMessage Post(ActivityResult ar)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
Но когда я вызываю API, передавая в POST файл json:
{"code":"XXX-542","indexValue":"3","primaryCodeReference":"7"}
Я получаю следующее сообщение об ошибке:
{
"Message": "The request entity media type 'text/plain' is not supported for this resource.",
"ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'ActivityResult' from content with media type 'text/plain'.",
"ExceptionType": "System.Net.Http.UnsupportedMediaTypeException",
"StackTrace": " in System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n in System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n in System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}
Что я делаю неправильно?
В запросе HTTP вам необходимо установить Content-Type в: Content-Type: application/json
Итак, если вы используете клиент fiddler, добавьте Content-Type: application/json
в заголовок запроса
еще один совет... где добавить "content-type: application/json"... в поле textbox на вкладке Composer/Parsed. Есть три строки, которые уже заполнены там, поэтому я добавил этот Content-type как 4-я строка. Это сделало работу Post.
Пожалуйста, проверьте, прошел ли вы метод POST
вместо GET
.
если это так, вы получите ту же ошибку, что и выше.
$http({
method: 'GET',
Тип носителя сообщения "text/plain" не поддерживается для этот ресурс.
У меня были все настройки, включенные в принятый ответ. Проблема была в том, что я пытался обновить сущность Entity Framework типа "Задача", например:
public IHttpActionResult Post(Task task)
Что сработало для меня, так это создать свою собственную сущность "DTOTask", например:
public IHttpActionResult Post(DTOTask task)