Using Custom SOAP Headers

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 !!