public static byte[] BuildMessage( object obj, Encoding encoding, ISoapHeaderBuilder header, XmlSerializerNamespaces namespaces) { XmlDocument xmlBody = new XmlDocument(); MemoryStream streamBody = new MemoryStream(ToXml(obj, encoding, null)); xmlBody.Load(streamBody); streamBody.Close(); Envelope envelope = new Envelope(); envelope.Body = new Body(); envelope.Body.Any = new XmlElement[] { xmlBody.DocumentElement }; if (header != null) { MemoryStream streamHeader = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(streamHeader, Encoding.UTF8); writer.WriteStartDocument(); writer.WriteStartElement("Header"); header.WriteHeader(writer, obj); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Flush(); streamHeader.Seek(0, SeekOrigin.Begin); XmlDocument xmlHead = new XmlDocument(); xmlHead.Load(streamHeader); streamHeader.Close(); envelope.Header = new Header(); List <XmlElement> elements = new List <XmlElement>(); foreach (XmlElement element in xmlHead.DocumentElement.ChildNodes) { elements.Add(element); } envelope.Header.Any = elements.ToArray(); } return(ToXml(envelope, encoding, namespaces)); }
public static byte[] BuildMessage(object obj, Encoding encoding, ISoapHeaderBuilder header) { return(BuildMessage(obj, encoding, header, null)); }