>System.Net.WebRequest req = System.Net.WebRequest.Create(RemoteServiceURL); >req.Method = "POST"; >req.ContentType = "text/xml"; >// Get the request stream to write to >System.IO.Stream streamWriter = (System.IO.Stream) req.GetRequestStream(); > >System.Xml.Serialization.XmlSerializer xmltrans = new System.Xml.Serialization.XmlSerializer(typeof(PaymentContainer)); > >// Create memory stream for Payment object serialization >MemoryStream memStream = new MemoryStream(); > >// Serialize using the memStream >xmltrans.Serialize(memStream ,Payment); >memStream.Seek(0, SeekOrigin.Begin); > >//Create XPath document for XML transformation >XPathDocument myXPathDocument = new XPathDocument(memStream); >XslTransform myXslTransform = new XslTransform(); > >// Load XSLT for transformation >string xsltDoc = System.AppDomain.CurrentDomain.BaseDirectory.ToString(); >xsltDoc = xsltDoc.Replace("/","\\"); >xsltDoc += "PaymentSerialize.xsl"; >myXslTransform.Load(xsltDoc); > >// IDEALLY, AT THIS POINT THIS SHOULD DO THE TRICK >// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxslxsltransformclasstransformtopic16.asp >// Call transform method and pass on the stream acquired from GetRequestStream() >myXslTransform.Transform(myXPathDocument, null, streamWriter, null); > >//but this doesn't work (no error, though) so I'll wait with closing the stream >//streamWriter.close(); > >//test the serialization of object by serializing and writing it to disk >string xsltTestDoc = System.AppDomain.CurrentDomain.BaseDirectory.ToString(); >xsltTestDoc = xsltTestDoc.Replace("/","\\"); >xsltTestDoc += "PaymentSerializeTestDoc.xml"; >XmlTextWriter xwriter = new XmlTextWriter(xsltTestDoc , null); >myXslTransform.Transform(myXPathDocument, null, xwriter, null); >xwriter.Close(); >// Data in test XML document looks fine > > >// Tried also with MemoryStream >MemoryStream memStreamToSend = new MemoryStream(); >myXslTransform.Transform(myXPathDocument, null, memStreamToSend, null); >memStreamToSend.Seek(0, SeekOrigin.Begin); > >// read the contents of the stream and write them manually to the http >byte[] byteArray = new byte[memStreamToSend.Length]; >int count = memStreamToSend.Read(byteArray, 0, (int) memStreamToSend.Length); >UnicodeEncoding uniEncoding = new UnicodeEncoding(); >char[] charArray = new char[uniEncoding.GetCharCount(byteArray, 0, count)]; >streamWriter.Write(byteArray, 0, byteArray.Length); > >// litte examining of the stream shows it has length=533 but all bytes are '' > >streamWriter.Close(); >System.Net.WebResponse response = req.GetResponse(); > >StreamReader streamR = new StreamReader(response.GetResponseStream(), Encoding.UTF8); >string xmlString = streamR.ReadToEnd().Trim(); > >// need to transform the XML response before deserializing > >PaymentContainer PaymentReceipt = (PaymentContainer) xmltrans.Deserialize(response.GetResponseStream()); >Danijel,