2011-11-10 52 views
0

我設置了JAXWS處理程序來驗證來自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); 
      } 

     } 

我如何從迭代器頭鍵和值提取?

回答

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還支持更多的方法。

0

請注意,在某些JAX-WS實現中,調用SOAPMessageContext.getMessage()會導致整個消息被解組。對於依賴流式傳輸MTOM附件來傳輸二進制內容(尤其是大型二進制內容)的Web服務,應該避免這種情況。

請參見我的文章,描述了更有效地檢索SOAP頭的值不同的方法:JAXWS Soap Handler Large MTOM Attachments

相關問題