繁体   English   中英

将集合发布到ASP.NET WEB API

[英]Post a collection to ASP.NET WEB API

我应该如何将对象集合发布到WEB API 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://本地主机: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请求时,设备始终为null。 但是,如果我将Action方法更改为仅接受一台设备,则可以通过Action方法接收设备数据。 仅当我传递集合时,我才能在Action方法中接收输入。 我想念什么吗? 我应该怎么做才能将集合(XML输入)发布到ASP.NET Rest服务?

提前致谢。

抹布

如评论中所述,用这种方式装饰您的班级

[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-design-jump-start-8689?l=BMxSvaH1_3804984382

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM