Trupti
Trupti

Reputation: 627

ASP.NET Web Api to return XML and get XML

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

Answers (3)

cimey
cimey

Reputation: 199

Make sure that your return type is serializable.

Upvotes: 0

akerra
akerra

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

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

Related Questions