JAXWS, как напечатать входящие заголовки клиента с помощью обработчика - PullRequest
1 голос
/ 10 ноября 2011

Я установил обработчик JAXWS для проверки входящего заголовка от клиента JAXWS.я хотел знать, как напечатать заголовки, которые записаны в

handleMessage(SOAPMessageContext context)

, что у меня есть здесь:

Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

        //for response message only, true for outbound messages, false for inbound
        if(!isRequest){

        try{
            SOAPMessage soapMsg = context.getMessage();
            SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope();
                SOAPHeader soapHeader = soapEnv.getHeader();

                Iterator<?> i = soapHeader.getChildElements();
                System.out.println("Number of header elements:  "
                        + countElements(i)); 

            }catch(SOAPException e){
                System.err.println(e);
            }

        }

как извлечь из итератора ключ и значение заголовков?

Ответы [ 2 ]

0 голосов
/ 27 июня 2013

Имейте в виду, что в некоторых реализациях JAX-WS вызовы SOAPMessageContext.getMessage () могут привести к тому, что все сообщение будет не маршалируемым. Этого следует избегать для веб-служб, которые используют потоковые вложения MTOM для передачи двоичного содержимого (особенно большого двоичного содержимого).

См. Мой пост, в котором описан другой метод более эффективного извлечения значений заголовков SOAP: JAXWS Soap Handler Большие вложения MTOM

0 голосов
/ 03 декабря 2011
while (i.hasNext()) {
    SOAPElement el = i.next(); // <ns:example>hello</ns:example>
    String tagName = el.getTagName(); // does not include namespace (example)
    String value = el.getValue(); // (hello)
}

SOAPElement также поддерживает намного больше методов.

...