Я создал службу 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 в строковых тегах и использует кодировку HTML для знаков <и>(& gt; & lt;).Мне нужно просто вернуть мне XML в точности так, как он был отправлен.Я отладил его, и XML остается неизменным на стороне сервера, так что это происходит при его отправке обратно.Любые идеи о том, как справиться с этим?Спасибо.