Обернуть вывод XML в ASP.NET Web API

Поэтому я работаю над веб-API, с которым канал Roku будет взаимодействовать для отправки и получения данных. Roku SDK имеет встроенный анализатор XML, который прост в использовании, но единственная проблема заключается в том, что Roku будет анализировать только XML, завернутый в <rsp stat="ok"></rsp> элемент. Я не вижу, как или где переопределить вывод XML в веб-API, чтобы обернуть его <rsp> элемент.

Итак, мой вопрос, как я могу переопределить XML Formatter и вставить <rsp stat="ok"> до выхода, и </rsp> после?

1 ответ

Решение

Если вы гарантируете, что вернете только XML, удалив JSON formatter, как это

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;
    }
}
Другие вопросы по тегам