如何从 Postman 将 XML 传递到 ASP.Net 核心中的 Web API

how to pass XML to Web API in ASP.Net core from Postman

我有 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 Bad Request。我也尝试在顶部添加以下行

<?xml version="1.0" encoding="UTF-8"?>

但还是一样的400。

如何将 XML 传递给 API 控制器?

谢谢!

ASP.NET内核默认不支持XMLserialization/deserialization。您必须明确启用:

services.AddMvc()
    .AddXmlSerializerFormatters();

@mason 在评论中的观点仍然是相关的。请求正文的 type 实际上是并且应该是无关紧要的。你永远不应该直接绑定到 XElementJObject 等东西。相反,你创建一个 class 来表示你的 XML document/JSON 对象的结构,并且绑定到那个。您在操作方法中实际绑定的内容与第三方客户端发送的内容无关。

如果请求是 XML、JSON 或任何其他内容,您会独立地收到作为 strem 的请求。收到的数据由您在这座桥的另一端解码,并转换为您想要的任何对象。 他们如何发送并不重要,重要的是你用它做什么。