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>