簡體   English   中英

XML后返回“ 405不支持的媒體類型”

[英]Post XML return “405 Unsupported Media Type”

我正在開發用於上載XML文件的Web API,但是當我嘗試將XML文件發送到路由時,出現以下錯誤:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
    "title": "Unsupported Media Type",
    "status": 415,
    "traceId": "80000018-0000-ff00-b63f-84710c7967bb"
}

我正在通過Postman進行測試,我的控制器具有以下功能:

namespace NFEApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UploadController : ControllerBase
    {
        // POST api/upload
        [HttpPost]
        public string Post([FromBody] XmlElement request)
        {
            return request.OuterXml;
        }
    }
}

添加到標題“ Content-Type:application / xml”中 ,將XML文件發送為“ binary”,將XML文本發送為“ raw”,類型為“ XML(application / xml)”,則無效。 我該如何進行?

您需要按如下所示在ConfigureServices中添加AddXmlSerializerFormatters() ,以便可以將對象與XML進行序列化:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().AddXmlSerializerFormatters().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

有關如何上傳xml文件的更多詳細信息,您可以在此處參考

如果將XML作為原始文本發布到正文中,則只需在API方法中使用字符串作為參數即可。

namespace NFEApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UploadController : ControllerBase
    {
        // POST api/upload
        [HttpPost]
        public string Post([FromBody] string xml)
        {
            return xml;
        }
    }
}

一種替代方法是在您的API方法中使用IFormCollection作為參數,然后將表單作為multipart / form-data發送

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM