WCF RESTFul服务 - 将XML作为字符串传递给服务

时间:2011-04-18 12:32:09

标签: xml wcf rest

我需要能够将XML作为字符串传递给RESTFul WCF服务,但是我很难这样做。有人可以告诉我怎么做到这一点?它必须作为字符串发送,我不能将其包装在数据合同等中。下面的服务合同示例

[OperationContract]
[WebInvoke(Method = "POST",
            UriTemplate = "lookup",
            BodyStyle = WebMessageBodyStyle.Bare,
            ResponseFormat = WebMessageFormat.Xml)]
Stream LookupPostcode(string requestXml);

非常感谢提前

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

尝试使用XElementStream作为方法参数。

[OperationContract] 
[WebInvoke(Method = "POST",
           UriTemplate = "lookup",
           BodyStyle = WebMessageBodyStyle.Bare,
           ResponseFormat = WebMessageFormat.Xml)] 
Stream LookupPostcode(Stream requestXml); 

...

[OperationContract] 
[WebInvoke(Method = "POST",
           UriTemplate = "lookup",
           BodyStyle = WebMessageBodyStyle.Bare,
           ResponseFormat = WebMessageFormat.Xml)] 
Stream LookupPostcode(XElement requestXml); 

...不确定你在方法内部尝试做什么,或者我可以提供更多帮助。

答案 2 :(得分:0)

这是一个主要的黑客,但你可以将XML包装在这样的<string>标签内。

 XmlDocument body = new XmlDocument();
 body.Load(...);

 postData = @"<string xmlns='http://schemas.microsoft.com/2003/10/Serialization/'><![CDATA[" + body.OuterXml + "]]></string>";

答案 3 :(得分:0)

在CDATA标记中包装xml会阻止解析器将其视为xml:

myString = "<![CDATA[<thexml/>]]>"