要求に応じてストリームを渡している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を返信する唯一の方法でした。ストリームとして返信しようとすると、クライアント側で何も受信されません。 – Nozoku
私は答えでの例を追加 – carlosfigueira
それは働いた。ありがとう。 – Nozoku