2013-07-19 77 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