Добавить заголовок к сообщению SOAP - PullRequest
1 голос
/ 14 апреля 2011

Мне нужно добавить пользовательский заголовок мыла, например, логин Я делаю это так

class Foo implements SOAPHandler<SOAPMessageContext> {
    public boolean handleMessage(SOAPMessageContext context) {
        try {
            SOAPMessage soapMsg = context.getMessage();
            SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope();
            soapEnv.addHeader().addAttribute(new QName("login"), "bob");

            soapMsg.writeTo(System.out);//tracing OUT
            return true;
        } catch (SOAPException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

@HandlerChain(file="handler-chain.xml")//I describe Foo in this file
public class GreeterService

По tracing out Я получаю сообщение

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header login="bob"/><S:Body><ns2:sayGoodbye xmlns:ns2="http://example.com/"><arg0>SOAP</arg0></ns2:sayGoodbye></S:Body></S:Envelope>

с заголовком

 <S:Header login="bob"/>

Но сервер получил его без заголовка

 <?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:sayGoodbye xmlns:ns2="http://example.com/"><arg0 xmlns="">SOAP</arg0></ns2:sayGoodbye></S:Body></S:Envelope>

Что я делаю не так?

1 Ответ

4 голосов
/ 14 апреля 2011

У меня была похожая проблема несколько дней назад, возникла необходимость отправить идентификатор пользователя по заголовку.

Я решил эту проблему с помощью специального параметра - wsimport -XadditionalHeaders при генерации кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...