Всем привет проблема с добавлением заголовка в запрос SAOP отправьте мне этот ответ

#java #spring-boot

Вопрос:

Решено [исключение javax.xml.ws.WebServiceException: исключение java.lang.RuntimeException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Не удается добавить заголовок, когда он уже присутствует.]

частный статический пустотный надстройщик(базовый запрос, запрос, действие IBaseAction) { Список обработчиков = новый список массивов();

     handlersList.add(new SOAPHandler<SOAPMessageContext>() {
        @Override
        public boolean handleMessage(SOAPMessageContext context) {
            try {
                Boolean outbound = (Boolean) context.get("javax.xml.ws.handler.message.outbound");
                if (outbound != null amp;amp; outbound) {
                    final ObjectFactory objectFactory = new ObjectFactory();
                    final JAXBElement<BaseRequestHeader> requesterCredentials = objectFactory.createRequestHeader(requestHeader);
                    log.info("=================="   requesterCredentials.getValue().getSecurityToken());
                    // obtaining marshaller which should marshal instance to xml
                    final Marshaller marshaller = JAXBContext.newInstance(BaseRequestHeader.class).createMarshaller();
                    // adding header because otherwise it's null
                    final SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
                    SOAPHeader header = envelope.addHeader();
                    // marshalling instance (appending) to SOAP header's xml node
                    marshaller.marshal(requesterCredentials, header);
                }
            } catch (final Exception e) {
                throw new RuntimeException(e);
            }
            return true;
        }

        @Override
        public void close(MessageContext arg0) {
        }

        @Override
        public boolean handleFault(SOAPMessageContext arg0) {
            return false;
        }

        @Override
        public Set<QName> getHeaders() {
            return null;
        }
    });

    ((BindingProvider) action).getBinding().setHandlerChain(handlersList);
}
 

Комментарии:

1. Добро пожаловать в StackOverflow ! Пожалуйста, не могли бы вы включить короткий текст, объясняющий, что вы пытаетесь сделать ? Таким образом, мы можем в конечном итоге предложить вам другое решение, если ваш код не может быть исправлен.