从 C# WebAPI 返回 XML(格式问题)
Returning XML From C# WebAPI (Formatting Issues)
我正在从我的 C# Web API.
调用 XML API
来自 XML API 的响应应返回给发起请求的最终用户。
目前格式似乎已损坏。当您直接调用 XML API 时,它 returns 正如预期的那样,但是,我的 C# API returns 响应只是一个 'lump' 字符串。
我是否需要将其反序列化为一个对象以使其获得更好的输出?
using (WebClient wc = new WebClient())
{
wc.BaseAddress = $"https://{urlBase}";
wc.Headers.Add(AuthorizationHeader, authorization);
result = wc.DownloadString(urlPath);
}
return result;
当我使用 Fiddler 查看应用程序对 XMLAPI 的调用时,我可以看到 XMLAPI 的响应具有正确的应用于它的格式。但是,当它从我的 C# API 返回时,格式似乎已损坏。
在 Application_Start 中,我强制应用程序使用 XMLMediaTypeFormatter 而不是 JSON,这似乎没有用:
GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter());
尝试下面应该 return XElement 的列表。如果你的结果只有内部文本或者你也有属性,我可以从黑色代码中看出
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();
}
}
}
我正在从我的 C# Web API.
调用 XML API来自 XML API 的响应应返回给发起请求的最终用户。
目前格式似乎已损坏。当您直接调用 XML API 时,它 returns 正如预期的那样,但是,我的 C# API returns 响应只是一个 'lump' 字符串。
我是否需要将其反序列化为一个对象以使其获得更好的输出?
using (WebClient wc = new WebClient())
{
wc.BaseAddress = $"https://{urlBase}";
wc.Headers.Add(AuthorizationHeader, authorization);
result = wc.DownloadString(urlPath);
}
return result;
当我使用 Fiddler 查看应用程序对 XMLAPI 的调用时,我可以看到 XMLAPI 的响应具有正确的应用于它的格式。但是,当它从我的 C# API 返回时,格式似乎已损坏。
在 Application_Start 中,我强制应用程序使用 XMLMediaTypeFormatter 而不是 JSON,这似乎没有用:
GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter());
尝试下面应该 return XElement 的列表。如果你的结果只有内部文本或者你也有属性,我可以从黑色代码中看出
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();
}
}
}