【问题标题】:How to POST XML content to a WEB API using correct JSON structure?如何使用正确的 JSON 结构将 XML 内容发布到 WEB API?
【发布时间】:2014-01-01 02:08:55
【问题描述】:

我正在使用 WEB API 通过将整个内容作为字符串传递来发布 XML 文件的内容。 但是我得到了错误,现在我试图找出我应该如何传递这个 XML 字符串?转义斜杠,没有双引号等......

这是我的(不正确的)JSON 结构的一个小例子:

{"xml":"
<server>
  <networkAdapters>
    <networkAdapter id="3d9c0d9d-d353-4d78-b034-b29f2dd824a0" ipEnabled="true">
      <defaultGateways>
        <defaultGateway address="x.x.x.x" costMetric="20" index="0" />
      </defaultGateways>
      <ipAddresses>
        <ipAddress address="x.x.x.x" subnetMask="255.255.255.192" index="0" />
      </ipAddresses>
      <dnsServers>
        <dnsServer address="x.x.x.x" index="0" />
        <dnsServer address="x.x.x.x" index="1" />
      </dnsServers>
    </networkAdapter>
</server>"}

WEB API 代码:

        //POST api/RunningValue_Import
        public object PostRunningValue(param_RunningValue inputData)
        {
            try
            {
                #region Retrieve XML string and Create XDocument
                TextReader tr = new StringReader(inputData.xml);
                XDocument doc = XDocument.Load(tr);
                #endregion
...

我正在尝试找出在将整个 XML 内容发布到我的 WEB API 之前需要做什么。

有什么想法吗? 谢谢

【问题讨论】:

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


【解决方案1】:

您需要像这样在 xml 字符串中转义双引号:

<dnsServer address=\"x.x.x.x\" index=\"0\" />

另外你的 xml 格式不正确,你没有包括结束 &lt;/networkAdapters&gt; 标记。

【讨论】:

  • 好吧,我转义了所有双引号和同样的问题。修复了最后一个标签,但这没关系,我只是传递了一个长的 xml 字符串;我只会在 WEB API 中解析它。还有什么建议吗?谢谢!
  • 我想我在这里找到了解决方案:stackoverflow.com/questions/10428177/…
【解决方案2】:

为什么不直接删除 JSON 包装器并直接发送 XML?

public HttpResponseMessage Post(XElement xElement)
{

...

}

【讨论】:

    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2014-03-08
    • 2016-09-12
    • 2020-12-04
    • 2017-06-09
    • 2013-01-15
    相关资源
    最近更新 更多