我设置了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);
}
}
如何从Iterator中提取标题键和值?
答案 0 :(得分:0)
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也支持更多方法。
答案 1 :(得分:0)
请注意,在某些JAX-WS实现中,对SOAPMessageContext.getMessage()的调用可能导致整个消息被解组。对于依赖流式MTOM附件传输二进制内容(特别是大型二进制内容)的Web服务,应该避免这种情况。
请参阅我的帖子,该帖子描述了一种更有效地检索SOAP标头值的不同方法:JAXWS Soap Handler Large MTOM Attachments