0

当我使用浏览器访问页面时,它是 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];
        }
    }
}

这是计算:

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>
4

1 回答 1

2

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

编辑:

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

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

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

于 2012-06-20T21:19:19.353 回答