WebApi用Post的方式提交Json时,获取不到值或不进对应方法的问题

又是一个通宵,终于搞明白了。

被WebApi坑得好惨。

之前用各种方法Post上来,有时可以读到结构,但没值,有时直接就是一个Null,有时连方法都没进就跑了,只是来控制器里看了一下……

最后好友说还是用Json,于是又回去看,最后实验了好久,终于成功了。

首先,用的是

 : ApiController

  接口,而不是普通的MVCController

其次,方法的命名是这样的:

[HttpPost]
public Response<string> PostTest([FromBody]JObject value)
//这里用JObject类型来接收值,是因为WebApi不支持JSON字串做为简单参数传递,如果直接写PostTest([FromUri]string value)这样也是可以的。

  最后,获取数据:

JToken jtk = value.GetValue("data");
List<model> list = jtk.ToObject<List<model>>();

  这样就能得到一个List<model>了。

当然,要引用一个dll的:

using Newtonsoft.Json.Linq;

  同时,在客户端要做一些设置:

如:

在发送Json的时候加上:

"Content-Type","application/json"

  表明它是一个json

并且,要注意的是data这个key与内容的关系:

WebApi用Post的方式提交Json时,获取不到值或不进对应方法的问题

data对应的内容是没有双引号的。

WebApi用Post的方式提交Json时,获取不到值或不进对应方法的问题

这样应该也就差不多了。

嗯,可以去吃早餐了。

PS:

现在用WEBAPI用久了,其实只要提交的JSON没问题,直接用MODEL(POST,GET)或参数(GET)来作为接口的参数都可以了,主要是提交的数据格式要对。

另外,如果POST的数据里带有文件,有时也会导致用实体的方式接收不到数据的。

最后更新,NET CORE完全没这些问题了,建议大家做新项目都用NET CORE来做吧

上一篇:Ubuntu下eclipse的Extjs提示插件安装


下一篇:Java接口中的方法