我是第一次接触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始终为空。仅当我将请求正文更改为:
={"mac":"0004ED123456","model":"SG6200NXL"}
我可以在我的formData
字符串中找到保存的{"mac":"0004ED123456","model":"SG6200NXL"}
。
所以我的问题是,我应该如何接收带有格式的数据:
data={"mac":"0004ED123456","model":"SG6200NXL"}
?
有没有一种简单的方法可以将JSON淡化成C#?
感谢您的帮助!
更新:我尝试使用model,但它仍然不适用于我。我的模型是:
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是由路由器发送的。我的工作是接收数据。
发布于 2016-08-18 03:59:09
这篇文章很旧了,但是我在寻找答案的时候偶然发现了它。我会把我的方法发布出来,也许有人会发现它很有用。
下面是请求:
POST /api/values HTTP/1.1
Host: localhost:62798
Accept: text/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 51ee1c5f-acbb-335b-35d9-d2b8e62abc74
UID=200&EMAIL=john%40jones.com&FIRST_NAME=John&LAST_NAME=jones&PHONE=433-394-3324&CITY=Seattle&STATE_CODE=WA&ZIP=98105
以下是模型:
public class SampleModel{
public string UID { get; set; }
public string Email { get; set; }
public string First_Name { get; set; }
public string Last_Name { get; set; }
public string Phone { get; set; }
public string City { get; set; }
public string State_Code { get; set; }
public string Zip { get; set; }
}
下面是自动(FromBody)将the编码值转换为模型的POST方法。
public HttpResponseMessage Post([FromBody] SampleModel value){
我能够挑选出任何值,即
SearchCity(value.City);
SearchName(value.Last_Name);
发布于 2013-12-04 15:41:11
您应该为数据创建一个对象,如下所示:
public class Device
{
public string mac {get;set;}
public string model {get;set;}
}
然后像这样修改你的控制器的action方法,并将你的对象从then传递给这个方法
public void Post(Device deviceData)
{
// You can extract data like deviceData.mac, deviceData.model etc
data.Add(deviceData);
}
您可以使用一个流行的库json.net对C#中的json对象进行序列化/反序列化
发布于 2013-12-04 15:55:33
创建模型
public class MyClass {
public string mac { get; set; }
public string model { get; set; }
}
并使用.net JavaScriptSerializer().Deserialize
public void Post([FromBody]string formData){
MyClass obj = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<MyClass>(formData);
//get mac and model by obj.mac obj.model
}
干杯:)
https://stackoverflow.com/questions/20369361
复制相似问题