CXF Interceptor获取SOAP Header中数据的方法

解答在CXF google中有一个帖子“请问如何用cxf在请求中加header信息“

由于需要记录访问services的client。需要从SOAP消息中获取Header的数据。具体的方法如下:

server:
1.public class LoggingInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
2. Log logger = LogFactory.getLog(LoggingInterceptor.class);
3.
4. private SAAJInInterceptor saajIn = new SAAJInInterceptor();
5.
6. public LoggingInterceptor() {
7. super(Phase.PRE_PROTOCOL);
8. getAfter().add(SAAJInInterceptor.class.getName());
9. }
10.
11. public void handleMessage(SoapMessage message) throws Fault {
12. try {
13. logger.info("记录访问web services日志");
14. SOAPMessage doc = message.getContent(SOAPMessage.class);
15. if (doc == null) {
16. saajIn.handleMessage(message);
17. doc = message.getContent(SOAPMessage.class);
18. }
19. SOAPHeader header = doc.getSOAPHeader();
20. if (header == null) {
21. return;
22. }
23.
24. NodeList nodes = header.getElementsByTagName("proc:user");
25. for(int i=0; i<nodes.getLength(); i++) {
26. System.out.println(nodes.item(i).getLocalName()+"----"+nodes.item(i).getTextContent());
27. }
28.
29. } catch (SOAPException e) {
30. e.printStackTrace();
31. }
32.
33. }
34.}



【转载地址】http://melin.iteye.com/blog/223643
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值