Asp.net web api 如何使ASP.NET Web API只返回XML?

Asp.net web api 如何使ASP.NET Web API只返回XML?,asp.net-web-api,Asp.net Web Api,我正试图向ASP.NETWebAPI发送一个get请求,并获取一个XML,以便在我的Android应用程序中对其进行解析。当我通过web浏览器尝试链接时,它返回XML,但当Android应用程序发送请求时,它返回JSON。如何以只发送XML的方式修复它?谢谢如果您不打算提供JSON,您可以删除JSON格式化程序: var formatters = GlobalConfiguration.Configuration.Formatters; formatters.Remove(formatters.

我正试图向ASP.NETWebAPI发送一个get请求,并获取一个XML,以便在我的Android应用程序中对其进行解析。当我通过web浏览器尝试链接时,它返回XML,但当Android应用程序发送请求时,它返回JSON。如何以只发送XML的方式修复它?谢谢

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

您还可以使用MessageHandler强制所有请求上的accept头为
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);
    }
}

您可以在
Application\u Start

使用


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

可能重复更改formatters集合可能是最好的方法,但我会尝试清除集合并添加回XmlFormatter。这救了我的命!!
config.MessageHandlers.Add(new ForceXmlHandler());