Возврат XML из C# WebAPI (проблемы форматирования) - PullRequest
0 голосов
/ 22 апреля 2020

Я вызываю XML API из моего C# Web API.

Ответ от XML API должен быть возвращен конечному пользователю, инициирующему запрос.

В настоящее время форматирование кажется нарушенным. Когда вы вызываете XML API напрямую, он возвращает, как и ожидалось, однако мой C# API возвращает ответ только в виде одной «комковой» строки.

Нужно ли десериализовать это в объект, чтобы получить его к лучшему выводу?

            using (WebClient wc = new WebClient())
        {
            wc.BaseAddress = $"https://{urlBase}";
            wc.Headers.Add(AuthorizationHeader, authorization);
            result = wc.DownloadString(urlPath);

        }

        return result;

Postman Output

Когда я смотрю на вызовы, которые приложение делает к XMLAPI, используя Fiddler, я вижу, что ответ из XMLAPI применяется правильное форматирование. Однако, когда это возвращается из моего C# API, форматирование кажется нарушенным.

enter image description here

В Application_Start я принудительно заставил приложение использовать XMLMediaTypeFormatter для JSON, похоже, это не сработало:

        GlobalConfiguration.Configuration.Formatters.Clear();
        GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter());

1 Ответ

0 голосов
/ 22 апреля 2020

Попробуйте выполнить следующее, которое должно вернуть список XElement. Я могу видеть из затемненного кода, если у ваших результатов есть только innertext или у вас также есть атрибуты

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string response = "";
            XDocument doc = XDocument.Parse(response);
            XElement applist = doc.Root;
            XNamespace ns = applist.GetDefaultNamespace();

            List<XElement> apps = doc.Descendants(ns + "app").ToList();
        }
    }
}
...