-1

我们正在实现一项 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);
4

1 回答 1

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; 
}

也可以看看:

于 2013-02-03T13:50:27.607 回答