.net core 接收xml、text/plain格式参数

发布时间 2023-10-09 14:08:34作者: 艺洁

1、接收xml

controller中写法如下

[HttpPost, ActionName("Sign_off")] 
[Produces("application/xml")]//接收
[Consumes("application/xml")]//返回
public async Task Sign_off([FromBody] XmlDocument xmldoc){ .....//你的业务逻辑 } 

Startup.cs中的ConfigureServices加上这一段

services.AddMvc().AddXmlSerializerFormatters();

2.接收text/plain

controller中写法如下

[HttpPost, ActionName("Sign_off")] 
[Produces("text/plain")]//接收
[Consumes("application/json")]//返回
public async Task Sign_off([FromBody] string xmlString){ .....//你的业务逻辑 } 

Startup.cs中的ConfigureServices加上这一段

services.AddMvc(options =>
{
options.InputFormatters.Insert(0, new TextInputFormatter());//接收text/plain
});

注:TextInputFormatter是自定义的,如下

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Formatters;

public class TextInputFormatter : InputFormatter
{
    public TextInputFormatter()
    {
        SupportedMediaTypes.Add("text/plain");
    }

    public override async Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context)
    {
        var request = context.HttpContext.Request;
        using (var reader = new StreamReader(request.Body, Encoding.UTF8))
        {
            var content = await reader.ReadToEndAsync();
            return await InputFormatterResult.SuccessAsync(content);
        }
    }

    protected override bool CanReadType(Type type)
    {
        return type == typeof(string);
    }
}