将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)