In this program in "handleRequest" method i added a Username/password in SOAP Header.
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.Handler;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.MessageContext;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
public class WSDLServiceHandler implements Handler {
private static final String HDR_PREFIX = "wsse";
private static final String HDR_URI = "http://schemas.xmlsoap.org/ws/2002/07/secext";
@Override
public void destroy() {
}
@Override
public QName[] getHeaders() {
return null;
}
@Override
public boolean handleFault(MessageContext context) {
return true;
}
@Override
public boolean handleRequest(MessageContext context) {
try {
SOAPMessageContext smc = (SOAPMessageContext) context;
SOAPMessage msg = smc.getMessage();
SOAPPart part = msg.getSOAPPart();
SOAPEnvelope env = part.getEnvelope();
SOAPHeader sh = msg.getSOAPHeader();
if (sh == null) {
sh = env.addHeader();
}
Name nameHdr = env.createName("Security", HDR_PREFIX, HDR_URI);
SOAPHeaderElement security = sh.addHeaderElement(nameHdr);
security.setMustUnderstand(false);
security.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);
SOAPElement userNameToken = security.addChildElement("UsernameToken", HDR_PREFIX);
userNameToken.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);
SOAPElement userName = userNameToken.addChildElement("Username",HDR_PREFIX);
userName.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);
userName.addTextNode("USERNAME");
SOAPElement password = userNameToken.addChildElement("Password",HDR_PREFIX);
password.addNamespaceDeclaration(HDR_PREFIX, HDR_URI);
password.addTextNode("UserPassword");
String soapEnvelope = env.toString();
} catch (SOAPException e) {
e.printStackTrace();
}
return true;
}
@Override
public boolean handleResponse(MessageContext context) {
return true;
}
@Override
public void init(HandlerInfo config) {
}
}
No comments:
Post a Comment