add header in springboot saop ws responde

17 Views Asked by At

I wrote a SOAP web service with spring boot and it works fine, I just want to add any element in the header for a test but I can't find how to do it, can you help me?

    @Endpoint
    public class WebServiceEndpoint {

    private static final Logger LOGGER = LoggerFactory.getLogger(WebServiceEndpoint.class);

        @PayloadRoot(namespace = "http://license", localPart = "getContentInfo")
        @ResponsePayload
        @ResponseStatus(code = HttpStatus.OK, reason = "OK")
        public JAXBElement <getContentInfoResponse> getRequest(@RequestPayload JAXBElement<getContentInfo> request, MessageContext messageContext) {
    
            getContentInfoResponse response = new getContentInfoResponse();
            ResponseLicense responseLicense = new ResponseLicense();
            responseLicense.setPlayHoursRemained(23456);
            responseLicense.setPlaysRemained(-1);
            responseLicense.setResultCode(0);
            //responseLicense.setResultMessage("");
            response.setGetContentInfoReturn(responseLicense);
            
            JAXBElement<getContentInfoResponse> xml = createJaxbElement(response, getContentInfoResponse.class);
            
            return xml;
          }
    
          private JAXBElement <getContentInfoResponse > createJaxbElement(getContentInfoResponse response, Class<getContentInfoResponse> clazz) {
              
              JAXBElement<getContentInfoResponse> xml = new JAXBElement<getContentInfoResponse>(new QName(clazz.getSimpleName()), clazz, response);

              return xml;
          }
            
}

this is what I would like...

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
    <ID>1234</<ID>
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <getContentInfoResponse xmlns:ns2="http://license">
         <ns2:getContentInfoReturn>
            <ns2:playHoursRemained>23456</ns2:playHoursRemained>
            <ns2:playsRemained>-1</ns2:playsRemained>
            <ns2:properties xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <ns2:resultCode>0</ns2:resultCode>
            <ns2:resultMessage xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         </ns2:getContentInfoReturn>
      </getContentInfoResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
0

There are 0 best solutions below