java – 如何获取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?

解决方法:

“[userId:null]”通常是DOM元素的“toString”打印输出.最有可能的是你做的事情

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

你会看到它是somesort的DOM Element子类.因此,像:

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

可能会打印文本节点.

上一篇:java – JAX-WS响应消息中的可选部分


下一篇:java – 在Gradle缓存中没有创建Gradle依赖项?