将XML发布到WebAPI方法始终为null

本文关键字:null 方法 WebAPI XML | 更新日期: 2023-09-27 18:23:35

我正在执行系统集成。客户文件说明

"消息传输时,HTTP CONTENT_TYPE标头设置为"application/x-www-form-urlencoded"。

<Message>
  <Originator>ACME Solutions</Originator>
  <Payload>
     ...message xml content goes here...
  </Payload>
</Message>

我使用的是WebApi 2,post的默认控制器操作有的定义

public void Post([FromBody]string value)

每次我将此消息发布到我的web服务时,收到的值总是空

我尝试过创建一个定义相同的类,但它的属性总是为null。

public void Post([FromBody]Message value)

如果我将定义更改为更通用的定义,我可以从请求内容中提取Xml文档,但这不是我想要的方式,因为这会使单元测试变得困难。

public void Post(HttpRequestMessage request)

有人能告诉我哪里出了问题,以及为什么xml消息没有映射到我的类吗。

将XML发布到WebAPI方法始终为null

在将内容类型设置为application/x-www-form-urlencoded时,还需要对正文进行编码以匹配。所以身体看起来不像这样:

<Message><Originator>ACME Solutions</Originator><Payload>message</Payload></Message>

看起来像这样:

value=%3CMessage%3E%3COriginator%3EACME+Solutions%3C%2FOriginator%3E%3CPayload%3Emessage%3C%2FPayload%3E%3C%2FMessage%3E