c# - 将集合发布到 ASP.NET WEB API

标签 c# asp.net rest asp.net-web-api collections

我应该如何将对象集合发布到 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/

相关文章:

java - 在 Spring 中处理可选输入 RESTful API 的最佳方式

c# - 是否可以在ElasticSearch更新中执行Ingest PipeLine?

c# - 在以下情况下使用指令和 SQLite 有什么问题?我得到了 ObjectDisposedException,但就在这里?

c# - 无法在 LINQ to SQL 中将类型 'string' 隐式转换为 'System.Data.Linq.Binary

asp.net - 在 ASP.NET 网站项目中设置断点

asp.net - 为 asp.net mvc 应用程序创建链接

rest - 在 Delphi 中哪里将访问 token 附加到 google REST 请求?

c# - UrlHelper 在生成 URI 时不使用引用主机

c# - Kendo UI DropDownList 更改触发事件

c# - ASP.NET 下拉列表的替代方案