我是Web API的新手。我想使用web-api接收HTTP POST数据。content-type为application/x-www-form- urlencoded
,请求主体为:
data={"mac":"0004ED123456","model":"SG6200NXL"}
(JSON格式)。
我的控制器是这样的:
public void Post([FromBody]string formData)
{
data.Add(formData);
}
但是formData始终为null。仅当我将请求正文更改为:
={"mac":"0004ED123456","model":"SG6200NXL"}
我可以找到{"mac":"0004ED123456","model":"SG6200NXL"}
已保存在我的formData
字符串中。
所以我的问题是我应该如何接收具有以下格式的数据:
data={"mac":"0004ED123456","model":"SG6200NXL"}
?
是否有一种简单的方法可以将JSON淡化为C#?
感谢帮助!
更新:我尝试使用模型,但是它仍然对我不起作用。我的模型是:
public class Device
{
public string mac { get; set; }
public string model { get; set; }
}
我的HTTP POST请求是:
标头:
User-Agent: Fiddler
Content-type: application/x-www-form-urlencoded
Host: localhost:52154
Content-Length: 46
身体:
data={"mac":"0004ED123456","model":"SG6200NX"}
Content-type: application/x-www-form-urlencoded
据我所知,我必须使用,因为HTTP
POST是由路由器发送的。我的工作是接收数据。
从这里报价:
默认情况下,Web API尝试从请求URI中获取简单类型。该 FromBody 属性指示Web API来读取请求主体的价值。
Web API最多读取一次响应主体,因此操作的一个参数只能来自请求主体。如果需要从请求正文中获取多个值,请定义一个复杂类型。
其次,客户端需要使用以下格式发送值:
=值
具体来说,对于简单类型,名称/值对的名称部分必须为空。
因此,如果要以格式发布数据,则data=string
必须创建复杂类型。
public class MyFormData
{
public string Data { get; set; }
}
然后像这样更新您的控制器:
public void Post(MyFormData formData)
{
//your JSON string will be in formData.Data
}
当然,您的其他选择是将内容类型更改为JSON,但实际上取决于您的要求。
我正在尝试使用,但数据没有到达PHP。我认为这是因为当使用标题始终设置为
问题内容: REST API映射到Java对象时,采用输入内容类型: 在表单输入请求中,我正在设置my_name和my_phone的值,但是MyRequest对象带有myName和myPhone作为空值。 我正在使用Jackson批注2.3 jar 有什么建议可能有什么问题吗? 问题答案: 我最近在使用SpringMVC和Jackson时遇到了同样的问题! 在Spring中,当您将端点显式配置为仅
我已经使用Springboot和ApacheCXF库实现了webservice。 如果header设置为content type:application/x-www-form-urlencoded,则会抛出“读取XMLStreamReader时出错”。 它的工作原理如果内容类型:应用程序/xml。 我在我们的遗留应用程序old Spring上公开了相同的Web服务,该应用程序托管在tomcat w
RESTAPI在映射到Java对象时采用输入内容类型:application/x-www-form-urlencoded,如 在表单输入请求中,我正在设置my_name和my_phone的值,但MyRequest对象的myName和myPhone为null。 我正在使用Jackson annotations 2.3 jar 有什么建议吗?可能有什么问题?
问题内容: 我想上网本REST API,它接受三个参数: ,, 我做它像这样在AngularJS为: 但是我总是这样: 对象{数据:“ {”结果“:”假“}”“,状态:200,配置:对象,状态文本:”确定“,标头:功能} 要么 {“ data”:“ {\” result \“:\” false \“}”,“状态”:200,“ config”:{“方法”:“ POST”,“ transformReq
我正在使用Jersey RESTful Web服务框架开发一个REST服务。 需要使用url编码的表单content-type,并将其解释/验证为bean。 当资源使用application/json或application/xml时,这是可能的,但是在application/x-www-form-urlencoded的情况下,我会收到'415-Unsupported Media type'响应。