2013-11-20 2 views
8

У меня есть контроллер, который возвращает данные в json. Я хотел бы, чтобы этот метод возвращал структуру XML и возвращал данные в структуру XML.ASP.NET Web Api для возврата XML и получения XML

Я добавил следующий код 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()); 
+0

Возможный дубликат [Как вернуть Xml-данные из метода веб-API?] (Https://stackoverflow.com/questions/15366096/how-to-return-xml-data-from-a-web-api- метод) – Clint

ответ

17

Для того, чтобы ASP.NET возвращенную Web API XML, вам не нужно делать любой код изменяется. Просто убедитесь, что у вас есть заголовок, подобный этому в HTTP-запросе.

Accept: application/xml 

Смотрите this для получения дополнительной информации о переговорах контента.

+0

Куда добавить Принять: application/xml – Trupti

+0

также дайте мне знать, где я должен создавать структуру XML и уважаемый файл xslt, я делаю web api в ASP.NET MVC4 – Trupti

+2

'Accept: application/xml' should to to ваши заголовки запросов. Web API автоматически вернет XML. Вот хороший пост, если вы хотите вернуть только один формат. Http://www.strathweb.com/2013/06/supporting-only-json-in-asp-net-web-api-the-right-way/ –

0

Я нашел при использовании VBA MSXML2.XMLHTTP60, чтобы сделать запросы, установив заголовок запроса в Accept: application/xml вернет пустой объект xml. Чтобы это исправить, я добавил следующую строку в мой файл WebApiConfig.cs в конце функции Регистрация:

config.Formatters.Add(new XmlMediaTypeFormatter()); 

Тогда мои объекты сериализации, как и ожидалось.

Смежные вопросы