Как читать дополнительные заголовки в запросе мыла при использовании SOAPHandler Java - PullRequest
0 голосов
/ 21 марта 2019

Я не могу получить мыльные заголовки, передаваемые как HttpPost.addHeader ("SOAPAction", "anystring") от клиента на стороне сервера.

Ниже приведен пример запроса на мыло

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservices.org.com/" xmlns:inp="http://www.sterlingcommerce.com/documentation/reservation/input">
   <soapenv:Header />
   <soapenv:Body>
      <web:reservation>
         <env>
            <loginId>admin</loginId>
            <password>password</password>
         </env>
         <input>
           <!--input goes here -->
         </input>
      </web:reservation>
   </soapenv:Body>
</soapenv:Envelope>

Ниже приведены фрагменты кода, которые я пробовал.

snippet1:

    public class SoapHandler implements SOAPHandler<SOAPMessageContext>{
    public boolean handleMessage(SOAPMessageContext messagecontext) {
       SOAPMessage soapMsg = messagecontext.getMessage();
       System.out.println("***HeaderList****");
        SOAPHeader soapHeader = soapMsg.getSOAPHeader();
        Iterator headerElements = soapHeader.examineAllHeaderElements();
        if(headerElements!=null){
            while (headerElements.hasNext()) {
                SOAPHeaderElement element = (SOAPHeaderElement) headerElements.next();
                System.out.println("soapHeader." + element.getElementName().getLocalName() + " = " + element.getValue());
            }
        }
    }
}

фрагмент 2:

public class SoapHandler implements SOAPHandler<SOAPMessageContext>{
    public boolean handleMessage(SOAPMessageContext messagecontext) {
        SOAPMessage soapMsg = messagecontext.getMessage();
        Message message = ((WrappedMessageContext) messagecontext).getWrappedMessage();
        List<org.apache.cxf.headers.Header> headers = CastUtils.cast((List<?>) message.get(org.apache.cxf.headers.Header.HEADER_LIST));
        if (headers != null) {
            for (org.apache.cxf.headers.Header header : headers) {
                System.out.println(((Element)header.getObject()).getTextContent());
            }
        }
    }
}

Здесь ожидается получение заголовка SOAPAction и его значения.

Мое требование - удалить мыло из заголовка после его получения, но я не смог как-то найти / получить этот дополнительный заголовок.

Пожалуйста, помогите мне в этом.

Спасибо.

...