肥皂消息检索

时间:2013-02-03 00:54:05

标签: java soap jax-ws message

我们正在实现一个JAX-WS Web服务,它需要在SOAP标头元素中检索用户名和密码,并将其用于进一步的使用/处理。 当我们检索用户名/密码时,它将变为空。请帮忙。

  if (Boolean.FALSE.equals(context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY))) {      
             try {
                 SOAPMessage sm = context.getMessage();
                 //SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
                 SOAPEnvelope envelope = sm.getSOAPPart().getEnvelope();
                 SOAPHeader sh = envelope.getHeader();

                System.out.println("Message: "+envelope);
                System.out.println("Envelope: "+envelope);
                 System.out.println("Header: "+sh.toString());
                 Iterator it = sh.examineAllHeaderElements();
                 while(it.hasNext()){
                     System.out.println(it.next());
                 }

           String username;
            username = sh.getAttribute("Username");
           // username  = sh.getAttributeValue("Username");
            //String password =  sh.getAttribute("Password");
                 System.out.println("uid:"+username);
                 //System.out.println("pass: "+password);
                context.put("Username", username);
                //context.put("Passsword", password);
                // default scope is HANDLER (i.e., not readable by SEI
                // implementation)
                context.setScope("Username", MessageContext.Scope.APPLICATION);

1 个答案:

答案 0 :(得分:2)

试试这个:

public boolean handleMessage(SOAPMessageContext context) { 
    try { 
        SOAPMessage message = context.getMessage(); 
        SOAPHeader header = message.getSOAPHeader();             
        if (header != null) { 
            Iterator i = header.getChildElements();
            //Navigate through header elements to get the username and password
        } 
    } catch (Exception e) { 
        //Handle exception 
    } 
    return true; 
}

另见: