Asp.Net Web Api,如何获取发布的XML格式数据?

时间:2014-11-20 11:39:32

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

我使用var content = Request.Content.ReadAsStringAsync().Result;将数据发布到我的

<xml><OpenId><![CDATA[oX2XXXXXX-HFCR8O_BkI]]></OpenId>
<AppId><![CDATA[wxbcXXXXXX4d]]></AppId>
<IsSubscribe>0</IsSubscribe>
<ProductId><![CDATA[XXXXXX01]]></ProductId>
<TimeStamp>1416482878</TimeStamp>
<NonceStr><![CDATA[XXXXXXX]]></NonceStr>
<AppSignature><![CDATA[cff4XXXXXX8a513891f0]]></AppSignature>
<SignMethod><![CDATA[sha1]]></SignMethod>
</xml>

我已经完成了结构

public class PackageModal
    {
        public string OpenId { get; set; }
        public string AppId { get; set; }
        public string IsSubscribe { get; set; }
        public string ProductId { get; set; }
        public string TimeStamp { get; set; }
        public string NonceStr { get; set; }
        public string AppSignature { get; set; }
        public string SignMethod { get; set; }
    }

但在控制器中, [HttpPost]

public string PostNotify(PackageModal modal)
{
 ....
}

为什么modal为空?我是否需要指定发布的数据是XML格式的?

2 个答案:

答案 0 :(得分:0)

如果您发送的是JSON而不是XML,那会起作用吗?

如果没有,请尝试在您的方法中使用[FromBody],例如

public string PostNotify([FromBody]PackageModal modal)
{
 ....
}

这将告诉模型绑定器尝试从请求主体映射PackageModel。

希望有所帮助。

答案 1 :(得分:0)

[HttpPost]
public string ReturnXmlDocument(HttpRequestMessage request)
{
    var doc = new XmlDocument();
    doc.Load(request.Content.ReadAsStreamAsync().Result);
    return doc.DocumentElement.OuterXml;
}

就是这样!