将数据发布到asp.net Web API

jda*_*vis 17 c# asp.net http asp.net-mvc-4 asp.net-web-api

我正在试图弄清楚新的ASP.NET Web API.

到目前为止,我已经能够创建此方法签名并连接到它就好并获得有效的响应...

[HttpPost]
public HttpResponseMessage CreateAccount()
Run Code Online (Sandbox Code Playgroud)

我能够使用fiddler向此方法发送请求,并已验证它正在接收请求.

但是,当我尝试传递数据时,我遇到了问题.

我尝试的第一件事就是......

[HttpPost]
public HttpResponseMessage CreateAccount([FromBody]string email, [FromBody]string password)
Run Code Online (Sandbox Code Playgroud)

我输入

电子邮件:XYZ,密码:ABC

在小提琴手的请求体内.当我这样做时,我得到一个500错误说明

'无法将多个参数('email'和'password')绑定到请求的内容.

我也尝试过这个方法签名......

[HttpPost]
public HttpResponseMessage CreateAccount([FromBody]UserAccountRequestData data)
Run Code Online (Sandbox Code Playgroud)

UserAccountRequestData是一个简单的POCO

public class UserAccountRequestData
{
    public string Email { get; set; }
    public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我说

{电子邮件:XYZ,密码:ABC}

要么

数据:{电子邮件:XYZ,密码:ABC}

进入请求的正文.在尝试填充POCO的两种情况下,我都可以在调试时访问该方法,但数据对象始终为null.

我需要了解如何创建接受强类型POCO和其他接受多种基本类型(如字符串和整数)的API方法.

谢谢

Dar*_*ler 17

您需要将Content-Type标头设置为application/json然后提供有效的JSON.

{"Email":"xyz","Password":"abc"}
Run Code Online (Sandbox Code Playgroud)

  • 达雷尔米勒的答案是+1.您也可以参考[将JSON对象发送到Web API]给出的答案(http://stackoverflow.com/questions/13870161/sending-json-object-to-web-api).它确实为您提供了问题的示例代码. (2认同)