【问题标题】:JAXWS how to print client incoming headers with handlerJAXWS 如何使用处理程序打印客户端传入标头
【发布时间】:2011-11-10 11:35:27
【问题描述】:

我设置了 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);
            }

        }

如何从迭代器中提取标题键和值?

【问题讨论】:

    标签: header jax-ws


    【解决方案1】:
    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 还支持更多方法。

    【讨论】:

      【解决方案2】:

      请注意,在某些 JAX-WS 实现中,对 SOAPMessageContext.getMessage() 的调用可能会导致整个消息被解组。对于依赖流式 MTOM 附件传输二进制内容(尤其是大型二进制内容)的 Web 服务,应避免这种情况。

      请参阅我的帖子,该帖子描述了一种更有效地检索 SOAP 标头值的不同方法:JAXWS Soap Handler Large MTOM Attachments

      【讨论】:

        猜你喜欢
        • 2012-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多