Возврат сырого мыльного ответа в Java с использованием JAX-WS - PullRequest
0 голосов
/ 04 июня 2011

У меня есть программа, в которой я вызываю сгенерированный код из функции jax-ws wsimport. Вот как это выглядит:

HolidayService2 service = new HolidayService2();
HolidayService2Soap proxy = service.getHolidayService2Soap();
ArrayOfCountryCode countries = proxy.GetCountriesAvailable("USA");

метод proxy.GetCountriesAvailable вызывает веб-сервис и возвращает массив кода страны. Можно ли каким-то образом получить отклик необработанного мыла в моем приложении?

Спасибо за любую помощь

1 Ответ

4 голосов
/ 04 июня 2011

Вы можете использовать программу отслеживания пакетов или программу на основе прокси.

Fiddler - это отличная программа на основе прокси или существует инструмент JAX-WS WSMonitor .

Для перехвата пакетов: Wireshark


Чтобы получить доступ к SOAPMessage, вам необходимо создать класс, реализующий интерфейс javax.xml.ws.handler.soap.SOAPHandler:

public class MySoapHandler implements SOAPHandler<SOAPMessageContext>
{
    @Override
    public Set<QName> getHeaders ()
    {
        ...
    }

    @Override
    public boolean handleMessage (final SOAPMessageContext context)
    {
        ...
    }

    @Override
    public boolean handleFault (final SOAPMessageContext context)
    {
        ...
    }

    @Override
    public void close (final MessageContext context)
    {
        ...
    }
}

и добавьте это в цепочку обработчиков привязки службы:

final BindingProvider bindingProvider = (BindingProvider) proxy;
final Binding binding = bindingProvider.getBinding ();
final List<Handler> handlerChain = binding.getHandlerChain ();
handlerChain.add (new MySoapHandler ());
binding.setHandlerChain (handlerChain);

Волшебство происходит в handleMessage / handleFault методах вашего пользовательского обработчика.Если у вас есть SOAPMessageContext, вы вызываете метод getMessage, и он возвращает вам экземпляр javax.xml.soap.SOAPMessage.SOAPMessage является объектным представлением необработанного мыльного пакета.Отсюда вы сможете восстановить структуру XML для ваших целей.

SOAPMessage Документы API

...