我应该如何将对象集合发布到 WEB API Rest 服务?
这是我的 Rest 服务中的内容..
我正在使用 XmlSerializer
这是ActionMethod
public class DevicesController : ApiController
{
[HttpPost]
public void PushToDb([FromBody] device[] devices)
{
var iCount = devices.Count();
...
...
}
这是设备 DTO:
public class device
{
public string serialnumber { get; set; }
public string hw_part_id { get; set; }
}
请求如下:
http://localhost:50384/api/Devices/PushToDb
和 XML 输入
<devices>
<device
<serialnumber>1</serialnumber>
<hw_part_id>A</hw_part_id>
</device>
<device>
<serialnumber>2</serialnumber>
<hw_part_id>A</hw_part_id>
</device>
</devices>
Content-Type 设置为 application/xml。
当我发送这个 Post 请求时,devices 总是空的。但是,如果我将 Action 方法更改为只接受一个设备,我就可以在 Action 方法中接收设备数据。 只有当我传递一个集合时,我才无法在 Action 方法中接收输入。 我错过了什么吗?我应该怎么做才能将集合(XML 输入)发布到 ASP.NET Rest 服务?
提前致谢。
抹布
最佳答案
正如评论中所说,以这种方式装饰你的类(class)
[DataContract]
public class device
{
[DataMember]
public string serialnumber { get; set; }
[DataMember]
public string hw_part_id { get; set; }
}
然后使用newtonsoft (或任何其他库)将 device
类型的数组序列化为 json。并使用 System.Net.WebClient
这样:
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
var jsonObj = JsonConvert.SerializeObject(yourArray); //yourArray is a device[]
client.UploadString(ApiServiceUrl, jsonObj);
}
关于c# - 将集合发布到 ASP.NET WEB API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086890/