Обернуть вывод 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;
}
}