我有ASP.Net Core 2.1
应用程序,我的API控制器如下所示。
[HttpPost]
public async Task<IActionResult> Post([FromBody]XElement recurlyXml)
{
var node = _xmlUtil.GetFirstNode(recurlyXml);
//do something
return Ok();
}
从邮递员那里,我正在用下面的有效负载调用此API。
<updated_subscription_notification>
<subscription>
<plan>
<plan_code>1dpt</plan_code>
<name>Subscription One</name>
</plan>
<uuid>292332928954ca62fa48048be5ac98ec</uuid>
</subscription>
</updated_subscription_notification>
但是,单击“发送”(命中)后,将引发400错误请求。我尝试在顶部也添加以下行
<?xml version="1.0" encoding="UTF-8"?>
但仍然是400。
如何将XML传递给API Controller?
谢谢!
默认情况下,ASP.NET Core不支持XML序列化/反序列化。您必须明确启用:
services.AddMvc()
.AddXmlSerializerFormatters();
不过,@ mason在评论中的观点仍然有意义。请求主体的类型实际上应该是无关紧要的。您永远不应直接绑定到诸如XElement
,JObject
等之类的东西。相反,您应创建一个表示XML文档/ JSON对象的结构的类并进行绑定。您在操作方法中实际绑定的内容与第三方客户端发送的内容无关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句