【问题标题】:How to return XML response in Web API如何在 Web API 中返回 XML 响应
【发布时间】:2019-01-04 11:04:40
【问题描述】:

大家新年快乐, 在我使用 StringWriter 序列化对象并返回输出响应并发送给客户端之后。但是当客户端收到响应时: 它有一个这样的标签:

<string xmlns="http://schemas.microsoft.com/...">
<?xml version="1.0" encoding="utf-16">
   <trx>.....</trx>
</string>

所以,我的问题是: 1.我应该如何返回正确格式的xml,如下所示:

 <?xml version="1.0" encoding="utf-16">
       <trx>.....</trx>

2。如果我使用 MemoryStream 将响应作为 byte[] 发送,客户端是否使用 encoding="utf-8" 正确接收?

非常感谢! 这是我用于序列化的代码路径:

StringWriter textWriter = new StringWriter();
XmlWriter tw = null;
XmlWriterSettings settings new XmlWriterSettings{
   Encoding =UnicodeEncoding.UTF8,
   Indent =false,
   OmitXmlDeclaration =false
};
var serialize1 =new XmlSerializer(typeof(OTrx));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
tw=XmlWriter.Create(textWriter,settings);
serializer1.Serialize(tw,oTrx,ns);
var output=textWriter.ToString();
return output

【问题讨论】:

  • 您能否提供一个代码 sn-p 显示您如何进行序列化。您只需声明“使用 StringWriter”。此外,关于 #2,这取决于您如何创建响应,因此还需要一个代码 sn-p 来提供帮助。

标签: c# .net xml serialization


【解决方案1】:

不确定您是否使用 .net 核心。 如果是,那么您可以使用这个中间件 nuget 包 - Microsoft.AspNetCore.Mvc.Formatters.Xml

code examples and detailed explanation.请参考此网址

【讨论】:

  • 我没有使用 .NET core :(
  • 请参考this link。您的标头决定 api 是发送 JSOn 还是 XML。
  • 所以我需要做的只是返回输出序列化对象,不需要关心响应类型,因为它取决于客户端请求头?
  • 你只需要返回可序列化的对象。根据 http 标头,将返回 xml 或 json。
  • 所以我只需要返回输出对象?但是当我使用 Postman 进行测试时,我看不到像格式一样的 Xml 输出。
【解决方案2】:

如果您分享一些示例代码,但您是否考虑过this,这会很有用?

如果你返回一个字符串,你会得到一个字符串。

【讨论】:

  • 是的,我想返回如下输出,那么我应该返回输出的类型:.. ...
猜你喜欢
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 2020-04-05
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
相关资源
最近更新 更多