如何使ASP.NET Web API只返回XML?

时间:2013-05-23 12:08:40

标签: asp.net-web-api

我正在尝试向ASP.NET Web API发送get请求并获取XML以在我的Android应用程序中解析它。当我通过Web浏览器尝试链接时它返回XML,但是当Android应用程序发送请求时它返回JSON。如何以仅发送XML的方式修复它?感谢

3 个答案:

答案 0 :(得分:5)

如果您不打算提供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);
}

答案 1 :(得分:2)

您还可以使用MessageHandler强制所有请求的接受标头为application/xml

public class ForceXmlHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> 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 :(得分:1)

您可以在Application_Start

中删除JSON格式化程序

使用

GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.JsonFormatter);