C# 如何从Postman将XML传递到ASP.Net核心中的Web API
我有C# 如何从Postman将XML传递到ASP.Net核心中的Web API,c#,xml,postman,asp.net-core-webapi,asp.net-core-2.1,C#,Xml,Postman,Asp.net Core Webapi,Asp.net Core 2.1,我有ASP.Net Core 2.1应用程序&我的API控制器如下所示 [HttpPost] public async Task<IActionResult> Post([FromBody]XElement recurlyXml) { var node = _xmlUtil.GetFirstNode(recurlyXml); //do something return Ok(); } [HttpPost] 公
ASP.Net Core 2.1
应用程序&我的API控制器如下所示
[HttpPost]
public async Task<IActionResult> Post([FromBody]XElement recurlyXml)
{
var node = _xmlUtil.GetFirstNode(recurlyXml);
//do something
return Ok();
}
[HttpPost]
公共异步任务发布([FromBody]XElement recurlyXml)
{
var node=_xmlUtil.GetFirstNode(recurlyXml);
//做点什么
返回Ok();
}
从postman,我用下面的负载调用这个API
<updated_subscription_notification>
<subscription>
<plan>
<plan_code>1dpt</plan_code>
<name>Subscription One</name>
</plan>
<uuid>292332928954ca62fa48048be5ac98ec</uuid>
</subscription>
</updated_subscription_notification>
1dpt
订阅一
292332928954ca62fa48048be5ac98ec
但是点击Send(点击),它抛出了400个错误的请求。我也尝试在顶部添加下面的一行
<?xml version="1.0" encoding="UTF-8"?>
但仍然是400
如何将XML传递给API控制器?
谢谢 ASP.NET核心默认情况下不支持XML序列化/反序列化。您必须明确启用以下功能:
services.AddMvc()
.AddXmlSerializerFormatters();
@不过,梅森在评论中的观点仍然相关。请求主体的类型实际上是并且应该是无关紧要的。您不应该直接绑定到诸如
XElement
、JObject
等对象。相反,您应该创建一个表示XML文档/JSON对象结构的类并绑定到该类。您在action方法中实际绑定到的内容与第三方客户端发送的内容无关。如果请求是XML、JSON或其他内容,您将独立地以strem形式接收请求。接收到的数据由您在桥的另一端解码,并转换为您想要的任何对象。
他们是如何发送的并不重要,但你如何处理它。对于Web API,你不应该在动作方法中处理XML。您的参数应该是一个强类型对象(只是一个普通的.NET类),它表示要发布到API的数据。然后,当您发布XML或JSON时,框架将使用模型绑定器将其转换为对象的类型,并将其作为参数传递给您的操作方法。@mason同意,但我有一个场景,该负载将来自第三方systemSo?它是否来自第三方系统并不重要。这并不能改变我刚才说的话。是什么阻止您创建表示要发布到Web API的数据的类(或类集)?