Post json data in body to web api

人盡茶涼 提交于 2019-12-03 13:53:06

WebAPI is working as expected because you're telling it that you're sending this json object:

{ "username":"admin", "password":"admin" }

Then you're asking it to deserialize it as a string which is impossible since it's not a valid JSON string.

Solution 1:

If you want to receive the actual JSON as in the value of value will be:

value = "{ \"username\":\"admin\", \"password\":\"admin\" }"

then the string you need to set the body of the request in postman to is:

"{ \"username\":\"admin\", \"password\":\"admin\" }"

Solution 2 (I'm assuming this is what you want):

Create a C# object that matches the JSON so that WebAPI can deserialize it properly.

First create a class that matches your JSON:

public class Credentials
{
    [JsonProperty("username")]
    public string Username { get; set; }

    [JsonProperty("password")]
    public string Password { get; set; }
}

Then in your method use this:

[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] Credentials credentials)
{
    string username = credentials.Username;
    string password = credentials.Password;
}

You are posting an object and trying to bind it to a string. Instead, create a type to represent that data:

public class Credentials
{
    public string Username { get; set; }
    public string Password { get; set; }
}

[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] Credentials value)
{
    string result = value.Username;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!