使用mvc 4如何从get请求中获取xml?

时间:2012-06-20 21:15:24

标签: c# xml asp.net-web-api

当我使用浏览器访问页面时,它是xml但是当我请求url时它是json。 mvc 4 api中是否存在某些内容,它只通过程序将json输出到请求中,或者我可以恢复xml。注意:这发生在桌面应用程序和网页中,所以它必须是某种设置,这是桌面给我的错误:Data at the root level is invalid. Line 1, position 1.是的我正在加载文档,我检查了通过使用json代替它,它回来了。

 private void Plus_Click(object sender, EventArgs e)
        {
            string FValue = id.Text;
            string SValue = id2.Text;
            string ending;
            string url = "http://localhost:56254/api/add?id=" + FValue + "&id2=" + SValue;
            XmlDocument xdoc = new XmlDocument();

            xdoc.Load(url);

            XmlNode xNode = xdoc.SelectSingleNode("End");
            ending = xNode.InnerText;
            Answer.Text = ending;
        }

这是我的桌面应用程序代码。 我获取xml的代码就在这里:

namespace Calculator.Controllers
{
    using Calculator.Models;
    public class AddController : ApiController
    {

        public Calcs GetAddition(int id, int id2)
        {
           double end = id + id2;
            Calcs[] calcs = new Calcs[] { new Calcs { FValue = id, SValue = id2, End = end } };
            return calcs[0];
        }
    }
}

这是Calcs:

namespace Calculator.Models

    {
        public class Calcs
        {
            public int FValue { get; set; }
            public int SValue { get; set; }
            public double End { get; set; }
        }
    }

以下是浏览器提供的内容:

<Calcs xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Calculator.Models">
<End>60</End>
<FValue>55</FValue>
<SValue>5</SValue>
</Calcs>

1 个答案:

答案 0 :(得分:2)

您需要在请求中设置接受标头类型。但是,由于您忽略了提供足够的信息来了解您如何请求数据,因此我可以帮助您。\

编辑:

这里的问题是XmlDocument.Load没有发送一个包含xml的接受标头,这个格式是真正的愚蠢,人们会认为它会。)

您可能必须使用WebRequest来检索文档,指定一个表示“application / xml; q = 0.9”的接受标题。

您可以在此处找到解决方案:C# Won't Load A Certain XML, But Works in Browser