Як зрабіць ASP.NET Web API вяртае толькі XML?

Я спрабую адправіць запыт GET на ASP.NET Web API і атрымаць назад XML, каб разабраць яго ў маім Android прыкладання. ён вяртае XML, калі я спрабую спасылку праз вэб-браўзэр, але вярнуць JSON, калі Android дадатак адправіць запыт. як выправіць гэта такім чынам, што толькі адпраўляе XML? дзякуй

5
Магчыма, дублююцца stackoverflow.com/questions/9847564/…
дададзена аўтар Denis Agarev, крыніца

6 адказы

Вы можаце выдаліць форматировщик JSON, калі вы не збіраецеся служыць JSON:

var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.JsonFormatter);

У вас таксама ёсць магчымасць відавочна паказаць форматировщик для выкарыстання ў вашых дзеяннях:

public object Get()
{
    var model = new 
    {
        Foo = "bar"
    };

    return Request.CreateResponse(HttpStatusCode.OK, model, Configuration.Formatters.XmlFormatter);
}
5
дададзена
Змена калекцыі фармацер, верагодна, лепшы спосаб, але я быў бы спакуса, каб ачысціць калекцыю і дадаць назад у XmlFormatter.
дададзена аўтар Darrel Miller, крыніца

Вы можаце выдаліць форматировщик JSON, калі вы не збіраецеся служыць JSON:

var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.JsonFormatter);

У вас таксама ёсць магчымасць відавочна паказаць форматировщик для выкарыстання ў вашых дзеяннях:

public object Get()
{
    var model = new 
    {
        Foo = "bar"
    };

    return Request.CreateResponse(HttpStatusCode.OK, model, Configuration.Formatters.XmlFormatter);
}
5
дададзена
Змена калекцыі фармацер, верагодна, лепшы спосаб, але я быў бы спакуса, каб ачысціць калекцыю і дадаць назад у XmlFormatter.
дададзена аўтар Darrel Miller, крыніца

Вы можаце выдаліць форматировщик JSON, калі вы не збіраецеся служыць JSON:

var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.JsonFormatter);

У вас таксама ёсць магчымасць відавочна паказаць форматировщик для выкарыстання ў вашых дзеяннях:

public object Get()
{
    var model = new 
    {
        Foo = "bar"
    };

    return Request.CreateResponse(HttpStatusCode.OK, model, Configuration.Formatters.XmlFormatter);
}
5
дададзена
Змена калекцыі фармацер, верагодна, лепшы спосаб, але я быў бы спакуса, каб ачысціць калекцыю і дадаць назад у XmlFormatter.
дададзена аўтар Darrel Miller, крыніца

Акрамя таго, можна прымусіць прыняць загаловак на ўсе запыты, каб быць прыкладання/XML з дапамогай MessageHandler

public class ForceXmlHandler : DelegatingHandler
{
    protected override Task SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
        request.Headers.Accept.Clear();
        request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
        return base.SendAsync(request, cancellationToken);
    }
}

Проста дадайце гэты апрацоўшчык паведамленняў для аб'екта канфігурацыі.

config.MessageHandlers.Add(new ForceXmlHandler());
2
дададзена
Гэта выратавала маю азадак !!
дададзена аўтар Kiran, крыніца

Акрамя таго, можна прымусіць прыняць загаловак на ўсе запыты, каб быць прыкладання/XML з дапамогай MessageHandler

public class ForceXmlHandler : DelegatingHandler
{
    protected override Task SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
        request.Headers.Accept.Clear();
        request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
        return base.SendAsync(request, cancellationToken);
    }
}

Проста дадайце гэты апрацоўшчык паведамленняў для аб'екта канфігурацыі.

config.MessageHandlers.Add(new ForceXmlHandler());
2
дададзена
Гэта выратавала маю азадак !!
дададзена аўтар Kiran, крыніца

Вы можаце выдаліць JSON FORMATTER іх у Application_Start

выкарыстанне

<�Код> GlobalConfiguration.Configuration.Formatters.Remove (GlobalConfiguration.Configuration.Formatters.JsonFormatter);

1
дададзена