Here is a simple way of adding custom SOAP Headers on an outgoing request.
Write a Data class as shown below:
[DataContract(Namespace = “http://personalspace.org”, Name ="CustomHeader")] public class CustomHeader { private string something; [DataMember(Name=”CustomElement”)”] public string someThing { get { return something; } set { something= value; } } }
In the BeforeSendRequest() method of the class that you have implemented the IClientMessageInterceptor interface, add the code below
MessageHeader<CustomHeader> header = new MessageHeader<CustomHeader>(); MyHeaderClass customHeader= new MyHeaderClass(); customHeader.someThing = "My value"; header.Content = header; header.Actor = “anonymoususer”;
MessageHeader unTypedHeader = header.GetUntypedHeader("CustomHeader", “http://personalspace.org”); request.Headers.Add(unTypedHeader);
That’s it. This will generate a header similar to the one below:
<CustomHeader:actor="Anyone" xmlns="http://personalspace.org"> <CustomElement>My Value</CustomElement> </CustomHeader>
Enjoy !!