我创建了以下方法契约,它从基于WCF REST的服务返回Stream
:
[OperationContract, WebGet(UriTemplate = "path/{id}")]
Stream Get(string id);
实现:
public Stream Get(string id)
{
WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
return new MemoryStream(Encoding.UTF8.GetBytes("<myXml>some data</MyXml>"));
}
一个。如何使用WebRequest
?
因为这听起来像是一个简单的问题,我怀疑我可能正在咆哮错误的树......也许回归XmlElement
是一种更好的方法。
B中。从基于WCF REST的服务返回原始XML的推荐方法是什么?
答案 0 :(得分:1)
我将首先回答你的第二个问题
从基于WCF REST的服务返回原始XML的推荐方法是什么?
一般来说,没有推荐的方法。 RESTful API概念是从数据格式中抽象出来的。从基于HTTP的WCF服务返回Stream
时,我会引用this MSDN article
因为该方法返回一个Stream,所以WCF假定该操作完全控制从服务操作返回的字节,并且它不对返回的数据应用任何格式。
要回答第一个问题,这里有一段可以调用您的实现的代码
var request = (HttpWebRequest)WebRequest.Create("location-of-your-endpoint/path/1");
request.Method = "GET";
using (var webResponse = (HttpWebResponse) request.GetResponse())
{
var responseStream = webResponse.GetResponseStream();
var theXmlString = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd();
// now you can parse 'theXmlString'
}