如何使用asp.net web API接受包含XML的HTTP POST?

时间:2015-09-02 08:06:28

标签: asp.net asp.net-web-api

我正在尝试使用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>

我错过了什么?

1 个答案:

答案 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