Вы можете использовать программу отслеживания пакетов или программу на основе прокси.
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