我不熟悉web api。我想使用web api接收HTTP POST数据。内容类型为application/x-www-form-urlencoded,请求正文如下:
data={“mac”:“0004ED123456”,“model”:“SG6200NXL”}(JSON格式)
我的控制器是这样的:
公共作废帖子([FromBody]字符串formData)
{
data.Add(formData);
}
但是formData总是空的。仅当我将请求正文更改为:
={“mac”:“0004ED123456”,“model”:“SG6200NXL”}
我可以找到{“mac”:“0004ED123456”,“model”:“SG6200NXL”}保存在我的formData字符串中
因此,我的问题是如何接收格式为的数据:
data={“mac”:“0004ED123456”,“model”:“SG6200NXL”}
有没有一种简单的方法可以将JSON淡化为C#
谢谢你的帮助
更新:
我试着使用这个模型,但它仍然不适合我。
我的模型是:
公共类设备
{
公共字符串mac{get;set;}
公共字符串模型{get;set;}
}
我的HTTP POST请求是:
标题:
用户代理:Fiddler
内容类型:application/x-www-form-urlencoded
主机:本地主机:52154
内容长度:46
正文:
data={“mac”:“0004ED123456”,“model”:“SG6200NX”}
据我所知,我必须使用内容类型:application/x-www-form-urlencoded,因为HTTP POST是由路由器发送的。我的工作是接收数据
从这里引述:
默认情况下,WebAPI尝试从请求URI获取简单类型。属性告诉Web API从请求主体读取值
Web API最多读取一次响应体,因此一个操作的一个参数只能来自请求体。如果需要从请求主体获取多个值,请定义复杂类型
其次,客户端需要以以下格式发送值:
=值
具体来说,对于简单类型,名称/值对的名称部分必须为空
因此,如果要以data=string格式发布数据,必须创建复杂类型
公共类MyFormData
{
公共字符串数据{get;set;}
}
并更新控制器,如下所示:
公共作废帖子(MyFormData formData)
{
//您的JSON字符串将采用formData.Data格式
}
当然,您的其他选择是将内容类型更改为JSON,但这取决于您的需求