【发布时间】:2015-05-12 09:51:08
【问题描述】:
我想从 rest api 请求中返回一个 xml 文档:
[HttpPost]
public string getClassXml(HttpRequestMessage req)
{
var response = Request.CreateResponse(HttpStatusCode.OK);
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
ClassXML classid = new ClassXML();
XmlDocument doc = new XmlDocument();
try
{
var data = req.Content.ReadAsStringAsync().Result;
classid = serializer.Deserialize<ClassXML>(data.ToString().Trim());
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
string path = ASDb.ReadValue("SELECT definitionxml FROM alclass WHERE classid='" + classid.classID + "'").ToString();
XmlTextReader reader = new XmlTextReader(AppDomain.CurrentDomain.BaseDirectory + "Resource\\" + percorso);
reader.Read();
doc.Load(reader);
return doc.innerXml;
}
但是通过这种方式我得到一个字符串,我想要一个 XmlDocument 而不是一个字符串。我也尝试返回 XmlDocument 文档,但它给了我一个错误:他的 'ObjectContent`1' 类型未能序列化内容类型 'application/xml; 的响应正文;字符集=utf-8'。 你有什么想法吗?
【问题讨论】:
-
你为什么不从消费端方法得到的 xml 制作 XmlDocument。
-
在创建 web 服务时不建议返回 XmlDocument 之类的复杂类;如果有人从另一种语言(如 PHP)访问您的服务,那么他们将无法使用复杂类。最好保持原样,以便 API 对其他语言开放。如果你不希望它是开放的,那你为什么还要使用 REST 呢?