I have an Iterceptor where I am handilg both the request and response. My header has nested elemnts. The datastructure is like this
<xsd:complexType name="soapRequestHeader">
<xsd:all>
<xsd:element name="requestID" type="xsd:string" />
<xsd:element name="requestPriority" type="xsd:string" />
<xsd:element name="isTraceEnabled" type="xsd:boolean"/>
<xsd:element name="clientIPAddress" type="xsd:string"/>
<xsd:element name="customerProfile" type="tns:customerProfile"/>
<xsd:element name="userEntitlement" type="tns:userEntitlement"/>
<xsd:element name="serviceMetadataKeys" type="tns:serviceMetadataKeys"/>
</xsd:all>
In the handleRequest when I try to get the header elements by iterating I am only able to get the root elemnt i.e the soapRequestHeader and not the nested elemnts.
I tried like this
SoapHeader header = (SoapHeader) requestHeader;
SoapHeaderElement headerElement = null;
Iterator iter = header.examineAllHeaderElements();
while (iter.hasNext()) {
Object headerElementObject = iter.next();
if (headerElementObject instanceof SoapHeaderElement) {
headerElement = (SoapHeaderElement) headerElementObject;
}
}
How can I get the nested elemnts?
It can be done by getting headerElement.getSource(); and then unmarshalling the source. But is there any other way.
Also in case of handleResponse I am constructing the hesder with nested elements.
How can it be done?


Reply With Quote