WebAPI返回XML

我想我的WEB API方法返回一个XML对象回调用应用程序。 目前它只是将XML作为字符串对象返回。 这是否是否? 如果是这样,你如何告诉webapi get方法它返回一个XML类型的对象?

谢谢

编辑:获取方法的一个例子:

[AcceptVerbs("GET")]
public HttpResponseMessage Get(int tenantID, string dataType, string ActionName)
{
   List<string> SQLResult = MyWebSite_DataProvidor.DB.spReturnXMLData
            ("SELECT * FROM vwContactListing FOR XML AUTO, ELEMENTS").ToList();
   string AllResults = "";
   for (int i = 0; i < SQLResult.Count - 1; i++)
   {
       AllResults += SQLResult[i];
   }
    string sSyncData = "<?xml version="1.0"?> " + AllResults;
    HttpResponseMessage response = new HttpResponseMessage();
    response.Content = new StringContent(sSyncData);
    return response;          
}

它有点冒险,因为我仍然处于原型阶段。 当我证明它可行时,会重构。


如果您返回一个可序列化的对象,WebAPI将根据客户端发送的Accept头自动发送JSON或XML。

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


如果您不希望控制器决定返回对象类型,则应将方法返回类型设置为System.Net.Http.HttpResponseMessage并使用以下代码返回XML。

public HttpResponseMessage Authenticate()
{
  //process the request 
  .........

  string XML="<note><body>Message content</body></note>";
  return new HttpResponseMessage() 
  { 
    Content = new StringContent(XML, Encoding.UTF8, "application/xml") 
  };
}

这是始终从Web API返回XML的最快捷方式。


这是另一种与IHttpActionResult返回类型兼容的方法。 在这种情况下,我要求它使用XML序列化程序(可选)而不是Data Contract序列化程序,我使用了return ResponseMessage(以便获得与IHttpActionResult兼容的返回结果:

return ResponseMessage(new HttpResponseMessage(HttpStatusCode.OK)
       {
           Content = new ObjectContent<SomeType>(objectToSerialize, 
              new System.Net.Http.Formatting.XmlMediaTypeFormatter { 
                  UseXmlSerializer = true 
              })
       });
链接地址: http://www.djcxy.com/p/20427.html

上一篇: WebAPI to Return XML

下一篇: MVC: How to Return a String as JSON