将POST中的json发送到Web API服务时出错

我正在使用Web API创build一个Web服务。 我实现了一个简单的类

public class ActivityResult { public String code; public int indexValue; public int primaryCodeReference; } 

然后我在我的控制器里面实现

 [HttpPost] public HttpResponseMessage Post(ActivityResult ar) { return new HttpResponseMessage(HttpStatusCode.OK); } 

但是当我调用在POST传递的API文件json:

 {"code":"XXX-542","indexValue":"3","primaryCodeReference":"7"} 

我获得以下错误信息:

 { "Message": "The request entity's 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到请求标头中

另一个技巧…在哪里添加“内容types:应用程序/ JSON”…在Composer / Parsed选项卡上的文本框字段。 这里已经有3条线了,所以我把这个Content-typejoin了第四行。 这使邮政工作。

请检查您是否将方法传递为POST而不是GET 。 如果是这样,你会得到同样的错误,因为你张贴在上面。

 $http({ method: 'GET', 

此资源不支持请求实体的媒体types“text / plain”。

我已经在接受的答案中涵盖了所有的设置。 我遇到的问题是我试图更新entity framework实体types“任务”,如:

 public IHttpActionResult Post(Task task) 

对我来说有效的是创build我自己的实体“DTOTask”,如:

 public IHttpActionResult Post(DTOTask task)