Search code examples
javasoapcxf

How do you add a Soap Header defined in a wsdl to a web service client in CXF?


I have a wsdl that defines a soap header that needs to be passed when calling the web service.

The sample SOAP Header is:

<soapenv:Header>
   <AuthenticationInfo>
      <userName>User</userName>
      <password/>
   </AuthenticationInfo>
</soapenv:Header>

CXF's wsdl2java generated an "AuthenticationInfo" java class that I can create and populate with a username and password, but I don't know the proper way to pass that to the CXF Client when calling the web service.


Solution

  • Well, the most simple way to do this would be create an ArrayList of Header objects and add all your parameters or a Map<String,Object> and add all your headers as map.put("param1",param1).

    Finally get your request context and add this arraylist of map as

    requestContext.put(MessageContext.HTTP_REQUEST_HEADERS,
    soapHeaders); 
    

    If you're trying to pass custom soap headers, refer THIS LINK.

    The general pitfalls have been mentioned in THIS DISCUSSION. It might be helpful to you.