Web api中的FromBody值为null

时间:2017-05-09 02:56:33

标签: asp.net asp.net-web-api2

这是我在apiController中的post方法

[HttpPost]
public String Post([FromBody]String key)
{

    Users ws;
    try
    {
        ws = JsonConvert.DeserializeObject<Users>(key);
        // return "success "+ key;
        return db.InsertFineInfo(ws);
    }
    catch (Exception ex)
    {
        return "ERROR Testing Purposes: " + ex;
    }

}

这是我的模型calss的一部分。(用户类)有很多属性,但在这里我只提到了几个带有getter和setter的em

{

    private String UserID;
    private String UserName;
    private String UserHeight;
    private String UserWeight;
    private String UserBMI;
    private String RequiredNeutrition;

    public string UserID1
    {
        get
        {
            return UserID;
        }

        set
        {
            UserID = value;
        }
    }

我尝试使用postmen调用此post方法。在每次尝试时我都获得了key的null值。

this is how i tried the post method with one header parameter application/json

出了什么问题?方法或我尝试调用它的方式有问题吗?

2 个答案:

答案 0 :(得分:1)

确定几点......

首先,您的方法期望的JSON看起来像

{
   "key": "your string....."
}

其次,您提供的代码有点直观......为什么不简单地

[HttpPost]
public String Post([FromBody]Users ws)
{
   ... // Done ?
}

您需要为我发布更多代码,以便能够正确回答上述方法可以接受的JSON样式。

在Web API中,当参数为null时,您可以非常确定发送到该方法的JSON与将参数序列化为JSON字符串时生成的JSON不匹配。

答案 1 :(得分:-1)

您必须将输入建模为C#类,然后将该类型作为输入。 假设你已经拥有一个&#34;用户&#34;您在请求正文中发送的具有与JSON相同属性的类:

double* D = (double*)malloc(sizeof(double) * TMAX * MAX);
// D[d1][d2] can be accessed *(D + d1 * TMAX + d2)