【问题标题】:Asp.Net Web Api, how to get posted XML format data?Asp.Net Web Api,如何获取发布的XML格式数据?
【发布时间】:2014-11-21 17:17:26
【问题描述】:

我使用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 格式吗?

【问题讨论】:

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


【解决方案1】:

如果您发送的是 JSON 而不是 XML,那会怎样?

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

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

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

希望对您有所帮助。

【讨论】:

  • [FromBody] 不工作。该 api 是一个付款通知 url。除了 xml 格式数据,我无法决定接收其他数据。
  • 是的,但是您的客户端将如何发送 xml。作为查询字符串(在 url 中)还是在消息正文中?
【解决方案2】:
[HttpPost]
public string ReturnXmlDocument(HttpRequestMessage request)
{
    var doc = new XmlDocument();
    doc.Load(request.Content.ReadAsStreamAsync().Result);
    return doc.DocumentElement.OuterXml;
}

就是这样!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2018-02-28
    • 2017-09-29
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多