Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将正文中的json数据发布到web api_Asp.net_Asp.net Web Api2_Postman - Fatal编程技术网

Asp.net 将正文中的json数据发布到web api

Asp.net 将正文中的json数据发布到web api,asp.net,asp.net-web-api2,postman,Asp.net,Asp.net Web Api2,Postman,我总是从身体得到空值为什么? 我用小提琴没问题,但邮递员不行 我有这样一个web api: [Route("api/account/GetToken/")] [System.Web.Http.HttpPost] public HttpResponseBody GetToken([FromBody] string value) { string result = value; } 我的邮递员资料: 和标题: 您正在发布一个对象并试图将其绑

我总是从身体得到空值为什么? 我用小提琴没问题,但邮递员不行

我有这样一个web api:

    [Route("api/account/GetToken/")]
    [System.Web.Http.HttpPost]
    public HttpResponseBody GetToken([FromBody] string value)
    {
        string result = value;
    }
我的邮递员资料:

和标题:

您正在发布一个对象并试图将其绑定到字符串。 而是创建一个类型来表示该数据:

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;
}

WebAPI按预期工作,因为您告诉它您正在发送此json对象:

{ "username":"admin", "password":"admin" }
然后要求它将其反序列化为
字符串
,这是不可能的,因为它不是有效的JSON字符串

解决方案1:

如果希望接收实际JSON,则
值中的值将为:

value = "{ \"username\":\"admin\", \"password\":\"admin\" }"
然后,您需要在postman中将请求主体设置为以下字符串:

"{ \"username\":\"admin\", \"password\":\"admin\" }"
解决方案2(我假设这就是您想要的):

创建一个与JSON匹配的C#对象,以便WebAPI能够正确地对其进行反序列化

首先创建一个与JSON匹配的类:

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

    [JsonProperty("password")]
    public string Password { get; set; }
}
然后在您的方法中使用以下内容:

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

不需要是
GetToken([FromBody]字符串用户名,[FromBody]字符串密码)
?或者您希望
value
包含整个json字符串?我希望以json字符串格式在正文中传递数据。我的代码中有什么问题?