Here is a way to get headers on the server side. It will fill up an assoc with all headers in a namespace. In its current state, it only handles text content; but each header is expanded to a DOMNode, so you can do whatever you wish to parse custom types.

In my case this method is useful because I want to pass PHPSESSID in a SOAP header, and I need to set it before I even call SoapServer::handle().

my header was suppose to look like this<soapenv:Header><ns1:AuthHeader><ns1:SessionKey>xxxx</ns1:SessionKey><ns1:SessionRole>xxxxx</ns1:SessionRole><ns1:UserType>xx</ns1:UserType><ns1:UserName>xxx</ns1:UserName></ns1:AuthHeader></soapenv:Header>