Reputation: 627
I have a controller which returns a data in json. I would like that method to return XML structure and get data back to XML structure.
I have added following code to WebApiConfig:
config.Routes.MapHttpRoute(
name: "defaultapi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "VehicleApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.XmlFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/xml"));
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
Global.asax.cs
GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter());
Upvotes: 8
Views: 20999
Reputation: 1210
I found when using VBA MSXML2.XMLHTTP60 to make requests, setting the request header to Accept: application/xml would only return a blank xml object. To fix this, I added the following line to my WebApiConfig.cs file at the end of the Register function:
config.Formatters.Add(new XmlMediaTypeFormatter());
Then my objects were serialized as expected.
Upvotes: 0
Reputation: 19321
To make ASP.NET Web API return XML, you don't need to make any code changes. Just ensure you have a header like this in the HTTP request.
Accept: application/xml
See this for more info on content negotiation.
Upvotes: 18