gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:01 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com