我正在进行系统集成。客户文档说明
“消息通过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)
每次我将此消息发布到我的网络服务时,收到的值始终为空
我尝试创建一个具有相同定义但始终具有null属性的类。
public void Post([FromBody]Message value)
如果我将定义更改为更通用的定义,我可以从请求内容中提取Xml文档,但这不是我想要的方式,因为它会使单元测试变得困难。
public void Post(HttpRequestMessage request)
任何人都可以建议我出错的地方以及为什么xml消息没有映射到我的班级。
答案 0 :(得分:1)
当您将内容类型设置为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