0
我創建了一個WCF服務,我將一個流傳遞給請求。客戶端代碼如下所示:XML響應在API響應中包含HTML編碼
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編碼爲<和>符號(& ); & lt;)。我需要它將XML正確地返回給我,就像發送它一樣。我已經對它進行了調試,並且XML在服務器端保持不變,所以在發送它時發生這種情況。有關如何處理這個問題的任何想法?謝謝。
是的,但你怎麼發回的數據流:
與例如
這是返回一個流的任意XML響應的方法的一個例子更新?這是我卡住的地方。我在互聯網上搜索了一個可行的例子,但沒有發現任何東西。使用字符串是我可以讓XML返回的唯一方法。當試圖將其作爲Stream發回時,客戶端不會收到任何內容。 – Nozoku
我在答案中加了一個例子 – carlosfigueira
明白了。謝啦。 – Nozoku