【发布时间】:2011-07-14 19:01:38
【问题描述】:
我创建了一个 WCF 服务,我根据请求将流传递给该服务。客户端代码如下所示:
FileInfo fo = new FileInfo("c:/Downloads/test.xml");
StreamWriter wo = fo.CreateText();
XmlDocument MyXmlDocument = new XmlDocument();
MyXmlDocument.Load("C:/DataFiles/Integrations/RequestXML.xml");
byte[] RequestBytes = Encoding.GetEncoding("iso-8859-1").GetBytes(MyXmlDocument.OuterXml);
Uri uri = new Uri("http://localhost:63899/MyRESTServiceImpl.svc/Receive");
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(uri);
Request.ContentLength = RequestBytes.Length;
Request.Method = "POST";
Request.ContentType = "text/xml";
Stream RequestStream = Request.GetRequestStream();
RequestStream.Write(RequestBytes, 0, RequestBytes.Length);
RequestStream.Close();
HttpWebResponse response = (HttpWebResponse)Request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string r = reader.ReadToEnd();
//XmlDocument ReturnXml = new XmlDocument();
//ReturnXml.LoadXml(reader.ReadToEnd());
response.Close();
wo.Write(r);
现在,我要做的就是处理请求,然后将 XML 直接返回给客户端以进行测试。这里分别是我的 IMyRESTServiceImpl.cs 和 MyRESTServiceImpl.svc.cs 代码:
[ServiceContract]
public interface IMyRESTServiceImpl
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare)]
Stream Receive(Stream text);
}
public class MyRESTServiceImpl : IMyRESTServiceImpl
{
public Stream Receive(Stream text)
{
string stringText = new StreamReader(text).ReadToEnd();
return text;
}
}
基本上发生的事情是 API 以字符串标签的形式将我的 XML 返回给我,并对 符号 (& gt; & lt;) 使用 HTML 编码。我需要它来将 XML 完全按照发送的方式返回给我。我已经对其进行了调试,并且 XML 在服务器端保持不变,因此在发回时会发生这种情况。关于如何处理这个问题的任何想法?谢谢。
【问题讨论】:
标签: xml wcf api httpwebrequest httpwebresponse