2013-07-19 38 views
0

因此,我正在研究Roku频道将与之交互以发送和接收数据的Web API。 Roku SDK有一个易于使用的内置XML解析器,但唯一的问题是Roku将只解析封装在<rsp stat="ok"></rsp>元素中的XML。我没有看到如何或在哪里重写Web API上的XML输出以将其包装为<rsp>元素。在ASP.NET Web API上包装XML输出

所以我的问题是,我该如何重写XML Formatter并在输出之前插入<rsp stat="ok">,然后在</rsp>之后?

回答

1

如果你确保你会被删除JSON格式类似这样的

config.Formatters.Remove(config.Formatters.JsonFormatter); 

你可以使用一个消息处理程序盲目添加信封这样所有的响应只返回XML。

public class MyHandler : DelegatingHandler 
{ 
    protected override async Task<HttpResponseMessage> SendAsync(
             HttpRequestMessage request, 
              CancellationToken cancellationToken) 
    { 
     var response = await base.SendAsync(request, cancellationToken); 
     string responseBody = "<rsp stat=\"ok\">" + 
            await response.Content.ReadAsStringAsync() + 
           "</rsp>"; 
     response.Content = new StringContent(
          responseBody, Encoding.UTF8, "application/xml"); 
     return response; 
    } 
} 
+0

正是我在找什么。谢谢! – goelze