如何获取 SOAP 标头 [英] How to get SOAP headers

查看:38
本文介绍了如何获取 SOAP 标头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:soap="http://soap.ws.server.wst.fit.cvut.cz/">
    <soapenv:Header>
        <userId>someId</userId>
    </soapenv:Header>
    <soapenv:Body>
    ...
    </soapenv:Body>
</soapenv:Envelope>

我想得到那个 userId.

我试过了

private List<Header> getHeaders() {
    MessageContext messageContext = context.getMessageContext();
    if (messageContext == null || !(messageContext instanceof WrappedMessageContext)) {
        return null;
    }
    Message message = ((WrappedMessageContext) messageContext).getWrappedMessage();
    return CastUtils.cast((List<?>) message.get(Header.HEADER_LIST));
}

private String getHeader(String name) {
    List<Header> headers = getHeaders();
    if (headers != null) {
        for (Header header : headers) {
            logger.debug(header.getObject());
            // return header by the given name                   
        }
    }
    return null;
}

它记录了 [userId : null].我如何获取值以及为什么 null 在那里?

And it logs [userId : null]. How can I get the value and why is null there?

推荐答案

"[userId : null]" 通常是 DOM 元素的 "toString" 打印输出.最有可能的是,如果你做类似的事情

"[userId : null]" is generally the "toString" printout of a DOM element. Most likely if you do something like

logger.debug(header.getObject().getClass())

你会看到它是某种 DOM Element 子类.因此,类似于:

you will see that it is a DOM Element subclass of somesort. Thus, something like:

logger.debug(((Element)header.getObject()).getTextContent())

可能会打印文本节点.

这篇关于如何获取 SOAP 标头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆