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];
        }
    }
}

これが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>
4

1 に答える 1

2

リクエストでacceptヘッダータイプを設定する必要があります。しかし、あなたはあなたがどのようにデータを要求していたかを知るのに十分な情報を提供することを怠ったので、それは私があなたを助けることができる限りです。\

編集:

ここでの問題は、XmlDocument.Loadが、受け入れられた形式のxmlを含むacceptヘッダーを送信しないことです(実際には、一種のばかげていると思います)。

おそらく、「application / xml; q = 0.9」を示すacceptヘッダーを指定して、WebRequestを使用してドキュメントを取得する必要があります。

ここで解決策を見つけることができます:C#は特定のXMLをロードしませんが、ブラウザでは機能します

于 2012-06-20T21:19:19.353 に答える