[英]Web API return XML
我正在尝试将返回的数据显示为xml,但它以纯文本形式返回。 我有以下代码:
context.Response.AddHeader("Content-Type", "text/xml");
context.Response.Write("<pre>" + HttpUtility.HtmlEncode(writer) + "</pre>");
我正在使用这个:
using (XmlTextWriter writer = new XmlTextWriter(context.Response.OutputStream, System.Text.Encoding.UTF8))
{
... write the xml
}
...并创建XML。
这是我发送的方式: context.Response.Write("<pre>" + HttpUtility.HtmlEncode(writer) + "</pre>");
如何在RAW中返回带有标签和所有标签的XML?
坦率地说,在Web API中正确的答案是按照@ LB2的建议进行内容协商。
如果我们看看您的操作方式,那么有些事情是不正确的。
context.Response.Write("<pre>" + HttpUtility.HtmlEncode(writer) + "</pre>");
不写任何XML,基本上使XML无效。 如果将其删除,一切似乎将开始起作用。
真正的选择是遵循LB2的建议,尽管抑制一个动作的内容协商不是很容易。 另一种(官方推荐的)方法是执行以下操作。
public HttpResponseMessage GetOrder() { // Sample object data Order order = new Order(); order.Id = "A100"; order.OrderedDate = DateTime.Now; order.OrderTotal = 150.00; // Explicitly override content negotiation and return XML return Request.CreateResponse<Order>(HttpStatusCode.OK, order, Configuration.Formatters.XmlFormatter); }
请参阅此链接以获取更多信息: http : //blogs.msdn.com/b/kiranchalla/archive/2012/02/25/content-negotiation-in-asp-net-mvc4-web-api-beta-part-1 .aspx ( 注意 :这是旧博客文章,需要更新为最新版本)
HttpConfiguration.Formatters
包含各种用于序列化模型的格式化程序。 不要直接写给Response,而应该考虑返回模型或XDocument
,然后确保在XmlFormatter
设置了HttpConfiguration.Formatters
以将其实际序列化为XML。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.