java - 如何获取 SOAP header

标签 java soap jax-ws cxf

这是请求

<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 在那里?

最佳答案

"[userId : null]"通常是 DOM 元素的“toString”打印输出。很可能如果你做类似的事情

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

您会看到它是某种 DOM 元素的子类。因此,类似于:

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

可能会打印文本节点。

关于java - 如何获取 SOAP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284486/

相关文章:

java - android 错误处理、断言或异常处理

java - Android SOAP wsdl

java - GlassFish 服务器部署

java - 有关 JAX-WS Web 服务的详细信息

java - 在我的游戏中显示图片和使用 int 时遇到问题

java - Java 中的居中面板

java - 读取文件列表<整数>

angular - 在 Angular 2 中使用 SOAP 服务

python - 如何使用 python (suds) 对 XML 进行签名

java - 尝试在 WSO2 Identity Server 中创建 ServiceProvider 时出现 ArrayIndexOutOfBoundsException