[FromBody]当ContentType:application / x-www-form-urlencoded [Fiddler]时,当ContentType:application / json或它序列化时,JToken param为null

时间:2016-12-12 13:49:25

标签: c# json model-view-controller asp.net-web-api fiddler

正如主题所说,我在试图通过Fiddler使用Request Body调用端点(POST)时遇到了问题。

有一个http api方法:

[HttpPost]
[Route("books")]
 public IHttpActionResult GetBooks([FromBody]JToken filterRequest)
 {...}

在Fiddler中,我使用请求标题进行POST调用:

User-Agent: Fiddler Host: localhost Content-Length: 21 Content-Type: application/json

请求正文如下:{ "title" : "Harry Potter"}。在调试时,我得到null filterRequest 参数。

但是当我使用Content-Type: application/x-www-form-urlencoded时,参数 filterRequest参数不是null,但遗憾的是包含不正确的语法,如:

{{" {\" title \" :\"哈利波特\"}":""}}

错误的序列化:

var columnsFilter = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(filter);

我不知道我在这里做错了什么。也许你遇到过类似的问题并且可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

事实证明,整个问题是基于错误的引号。我只需使用 ' ,已发布的请求正文与Content-Type: application/json.

一致