发布一个集合到ASP.Net web api

本文关键字:Net web api ASP 布一个 集合 | 更新日期: 2023-09-27 18:17:31

如何将对象集合发布到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/设备/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请求时,设备总是空的。但是如果我将Action方法更改为只接受一个设备,我就能够在Action方法中接收设备数据。只有当我传递一个集合时,我才无法接收Action方法中的输入。我错过什么了吗?我应该怎么做才能发布一个集合(XML输入)到ASP。. NET Rest服务?

提前感谢。

破布

发布一个集合到ASP.Net web api

正如评论中所说,用这种方式装饰你的类

[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);
 }

亲爱的,从工作中休息一下,看看这个MVA课程,它一定会解决你的问题

https://www.microsoftvirtualacademy.com/en - us/training courses/web - api -设计-跳-开始- 8689 ?l=bmxsvah1_3804984382

thank you