Ich habe POJO-Klasse mit dem Namen RequestSOAPHeader für SOAP-Header.So fangen Sie benutzerdefinierte SOAP-Header localPart Anfrage im Frühjahr Boot
Im @Endpoint Ich Fang die Header wie unten
@SoapHeader("{" + RequestSOAPHeader.AUTH_NS + "}RequestSOAPHeader")SoapHeaderElement auth
Mein Problem ist, wenn ich versuche, meine Header in POJO Klasse entordnen ich folgende Fehlermeldung habe.
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.test.com/schema/common/v2_1", local:"RequestSOAPHeader"). Expected elements are <{http://www.test.com/schema/common/v2_1}requestSOAPHeader>
ich die folgende Methode verwenden für unmarsahlling meinen Kopf
private RequestSOAPHeader getAuthentication(SoapHeaderElement header){
RequestSOAPHeader authentication = null;
try {
JAXBContext context = JAXBContext.newInstance(RequestSOAPHeader.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
authentication = (RequestSOAPHeader) unmarshaller.unmarshal(header.getSource());
} catch (JAXBException e) {
e.printStackTrace();
}
return authentication;
}
Nach dem Fehler, den ich meinen Kopflokalteil Namen requestSOAPHeader geändert habe und es funktioniert gut.
@SoapHeader("{" + RequestSOAPHeader.AUTH_NS + "}requestSOAPHeader")SoapHeaderElement auth
Aber ich will für Kopf RequestSOAPHeader als Lokalteil verwenden, nicht requestSOAPHeader
Haben Sie irgendeine Klasse, die SOAPMandler 'implementiert? –
Nein. Ich verwende keine Klasse, die SOAPMandler implementiert. Ich benutze die erwähnte Methode getAuthentication (SoapHeaderElement header) um den Header zu entpacken. –
Saikat1529