我正在尝试使用Web API并接受包含XML的HTTP POST。
我的印象是,这可以自动反序列化为一个对象,但我遗漏了一些东西。
public class Item
{
public int Value { get; set; }
}
这个工作正常,我从SoapUI收到XML并可以采取行动
[HttpPost]
public HttpResponseMessage Post(int id, HttpRequestMessage request)
{
var doc = new XmlDocument();
doc.Load(request.Content.ReadAsStreamAsync().Result);
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, new Item() { Value = id });
return response;
}
我想拥有这个:
[HttpPost]
public HttpResponseMessage Post(int id, [FromBody]List<Item> items)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
尝试发布此内容:
<Items><Item><Value>1</Value></Item></Items>
我错过了什么?
答案 0 :(得分:1)
为什么总是在发布后立即找到答案。
我忘了添加:
var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;
如AspNet WebApi POST parameter is null when sending XML
所述我发送的XML现在看起来像这样:
<ArrayOfItem><Item><Value>1</Value></Item><Item><Value>2</Value></Item></ArrayOfItem>
不记得我在哪里读到必须指定为ArrayOfXxx