Я новичок в SOAP и хотел бы узнать, как настроить заголовок SOAP. В частности, я пытаюсь настроить SOAP-заголовок исходящего сообщения так, чтобы он соответствовал ожидаемому формату. Заголовок будет использоваться для аутентификации.
Это то, что у меня есть до сих пор.
Я настроил метод для добавления мертвой точки безопасности, где я пытаюсь отформатировать заголовок в соответствии со спецификацией.
private void addSecurityHeader(SOAPMessageContext messageContext) throws SOAPException {
public static final String WSSE_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
public static final String WSSE_SECURITY_NAME = "Security";
public static final String WSSE_NS_PREFIX = "wsse";
public static final String SOAPENV_NS_PREFIX = "soapenv";
SOAPEnvelope envelope = messageContext.getMessage().getSOAPPart().getEnvelope();
SOAPHeader header = messageContext.getMessage().getSOAPPart().getEnvelope().getHeader();
SOAPBody body = messageContext.getMessage().getSOAPPart().getEnvelope().getBody();
// changing prefix to soapenv
envelope.setPrefix(SOAPENV_NS_PREFIX);
header.setPrefix(SOAPENV_NS_PREFIX);
body.setPrefix(SOAPENV_NS_PREFIX);
// adding security Element
Name securityName = soapFactory.createName(WSSE_SECURITY_NAME, WSSE_NS_PREFIX, WSSE_NS);
SOAPHeaderElement securityElement = header.addHeaderElement(securityName);
Когда я распечатываю сообщение в консоли Eclipse, элемент безопасности имеет следующий формат:
<wsse:Security xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1">
Но это желаемый формат формата Security:
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
Подводя итог проблемам, которые мне нужно решить:
1) Мне нужно изменить SOAP-ENV на soapenv.
SOAP-ENV: mustUnderstand = "1"
должно быть
мылоэнв:долженПонять="1"
2) мне нужно удалить
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
так как это не нужно в этом элементе.
Любые советы, как это сделать, будут очень признательны.