如何使ASP.NET Web API只返回XML?
我正在尝试向ASP.NET Web API发送获取请求,并取回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);
}
}
只需将此消息处理程序添加到配置对象即可。
config.MessageHandlers.Add(new ForceXmlHandler());
您可以在Application_Start
删除JSON格式化它们
使用
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.JsonFormatter);