如何在没有Content-Type Web API .Net core 2.1的情况下绑定POST请求?

时间:2019-01-15 20:29:02

标签: asp.net-core

我试图捕获服务器发送给我的HTTP请求中包含的XML,但是HTTP不包含Content-Type。 我无权访问服务器,因此无法添加Content-Type。

如果我尝试将请求正文与[FromBody]绑定,则会收到错误415不支持的媒体类型

[HttpPost("voicebiometricsengine")]
    public async Task<IActionResult> VoiceBiometricsEngine([FromBody] XmlDocument analytics)
    {        
        return Ok();
    }

如果我尝试将主体作为字符串获取,则字符串为空

 [HttpPost("voicebiometricsengine")]
    public async Task<IActionResult> VoiceBiometricsEngine(string analytics)
    {

        return Ok();
    }

您可以在下图看到HTTP包: enter image description here

1 个答案:

答案 0 :(得分:1)

没有内容类型,当尝试与方法参数绑定时,框架不知道如何解析正文。

一种选择是在方法内部手动读取请求正文

[HttpPost("voicebiometricsengine")]
public async Task<IActionResult> VoiceBiometricsEngine(string analytics)
{
    using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
    {  
        var body = await reader.ReadToEndAsync();
    }
    return Ok();
}