0

そのため、Roku チャネルがやり取りしてデータを送受信する Web API に取り組んでいます。Roku SDK には使いやすい XML パーサーが組み込まれていますが、唯一の問題は、Roku が<rsp stat="ok"></rsp>要素にラップされた XML のみを解析することです。<rsp>Web API で XML 出力をオーバーライドして要素でラップする方法や場所がわかりません。

私の質問は、XML フォーマッターをオーバーライドして<rsp stat="ok">、出力の前後に挿入するにはどうすればよい</rsp>ですか?

4

1 に答える 1

1

このように JSON フォーマッタを削除して XML のみを返すことを保証する場合

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

メッセージ ハンドラーを使用して、このようなすべての応答に対して盲目的にエンベロープを追加できます。

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;
    }
}
于 2013-07-19T16:21:17.377 に答える