.NET接口接收和返回XML格式数据

最近遇到了一个冷门问题,就是写一个接口,接收XML格式数据,然后再返回XML格式数据,这个问题在国内的技术论坛上扒了半天,然而并没有什么有效的内容出来,最后还是跳墙再加上一点脑力劳动,把这个问题给解决了。

.NET Framework MVC接收application/xml示例代码:

        public ActionResult UploadXML()
        {
            Stream postData = Request.InputStream;
            StreamReader sRead = new StreamReader(postData);
            string postContent = sRead.ReadToEnd();
            return Content("ok");
        }

 .NET Core接收application/xml示例代码:

        [HttpPost]
        [Produces("application/xml")]
        [Consumes("application/xml")]
        public async Task<string> UploadXML()
        {
            string xml;
            using (System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body, Encoding.UTF8))
            {
                xml = await reader.ReadToEndAsync();
            }
            return xml;
        }

注意:[HttpPost][Produces("application/xml")][Consumes("application/xml")]标记理论上可以删除(自己去试吧),如果要在.NET Framework MVC 中使用这部分代码,只需要将上述标记删除,然后将Request.Body换成Request.InputStream即可

.NET Framework MVC/ .NET Core返回application/xml示例代码:

        public ActionResult RetXml()
        {
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.LoadXml("<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[支付结果中微信订单号不存在]]></return_msg></xml>");
            byte[] bytes = Encoding.UTF8.GetBytes(xmlDocument.OuterXml);
            return new FileContentResult(bytes, "application/xml");
        }

注意:这个方法通用于任何HTTP的内容返回格式,根据自己的需求进行更改就行了。

实现效果:

 

 

THE END