gpt4 book ai didi

c# - 带有 xml 输入的 .net core 2.0 Web api httppost 为 null

转载 作者:行者123 更新时间:2023-12-02 08:38:38 26 4
gpt4 key购买 nike

尝试获取 .net core 2.0 Web api HttpPost 方法来处理 xml 输入。

预期结果:从 Postman 调用测试端点时,输入参数(以下代码中的 xmlMessage)应具有从 Postman HttpPost 主体发送的值。

实际结果:输入参数为空。

在Web api项目的startup.cs中,我们有以下代码:

public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddXmlDataContractSerializerFormatters();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}

在 Controller 中:

[HttpPost, Route("test")]
public async Task<IActionResult> Test([FromBody] XMLMessage xmlMessage)
{
return null; //not interested in the result for now
}

XMLMessage 类:

[DataContract]
public class XMLMessage
{
public XMLMessage()
{
}

[DataMember]
public string MessageId { get; set; }
}

在 postman 标题中:

Content-Type:application/xml

HTTP 帖子正文:

<XMLMessage>
<MessageId>testId</MessageId>
</XMLMessage>

感谢任何可以为我指明正确方向的帮助。提前致谢..

最佳答案

您应该使用 XmlRoot/XmlElement 而不是 DataContract/DataElement 注释类型。以下是要使其正常工作应更改的内容。

在 Startup.cs 上

public void ConfigureServices(IServiceCollection services){
services.AddMvc(options =>
{
options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
});
// Add remaining settings
}

XMLMessage 类:

[XmlRoot(ElementName = "XMLMessage")]
public class TestClass
{
//XmlElement not mandatory, since property names are the same
[XmlElement(ElementName = "MessageId")]
public string MessageId { get; set; }
}

其他部分看起来不错( Controller 和 header )。

Michał Białecki 创建了一篇关于该主题的非常好的帖子。更详细的实现请引用: Accept XML request in ASP.Net MVC Controller

关于c# - 带有 xml 输入的 .net core 2.0 Web api httppost 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51480259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com