Envelope soap - client side

0 respostas
G

Olá a todos.

Pessoal estou com uma certa dificuldade em criar um envelope com header e body e colocar um anexo no body.

Eu estou montando ele da seguinte forma:

public boolean handleMessage(SOAPMessageContext context) {
String prefixUri = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-";
        String uri = prefixUri + "wssecurity-secext-1.0.xsd";
        String uta = prefixUri + "wssecurity-utility-1.0.xsd";
        String ta = prefixUri + "username-token-profile-1.0#PasswordText";
        Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
        if (outboundProperty.booleanValue()) {
            try {
                SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
                SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
                SOAPFactory factory = SOAPFactory.newInstance();
                String prefix = "wsse";
                SOAPElement securityElem = factory.createElement("Security", prefix, uri);
                SOAPElement tokenElem = factory.createElement("UsernameToken", prefix, uri);
                tokenElem.addAttribute(QName.valueOf("wsu:Id"), "UsernameToken-2");
                tokenElem.addAttribute(QName.valueOf("xmlns:wsu"), uta);
                SOAPElement userElem = factory.createElement("Username", prefix, uri);
                userElem.addTextNode(usuario);
                SOAPElement pwdElem = factory.createElement("Password", prefix, uri);
                pwdElem.addTextNode(senha);
                pwdElem.addAttribute(QName.valueOf("Type"), ta);
                tokenElem.addChildElement(userElem);
                tokenElem.addChildElement(pwdElem);
                securityElem.addChildElement(tokenElem);
                SOAPHeader header = envelope.addHeader();
                header.addChildElement(securityElem);


                SOAPPart soapPart = soapMessage.getSOAPPart();
                SOAPBody soapBody = envelope.getBody();
                soapBody.setPrefix("soapenv");

O server é autenticado, e eu consigo autenticar numa boa com este cabeçalho, mas quando tento implementar o attachment no body
ele dá o seguinte erro:

Endpoint does not contain operation meta data for empty soap body

Alguém aí tem idéia do que eu poderia fazer? As tags xml estão corretas e eu estou tentando anexar um xml em Base64.

Criado 9 de agosto de 2013
Respostas 0
Participantes 1