Как получить сообщение SOAP при использовании клиента Axis 1.4, созданного wsdl2java

Вероятно, это простой вопрос для любого, кто хоть немного разбирается в веб-сервисах, использующих Apache Axis.

У меня есть клиент веб-службы, созданный wsdl2java в Axis 1.4. Я пишу модульные тесты, которым необходимо получить доступ к самому фактическому сообщению SOAP, и провожу сравнение с java-классами на стороне клиента, которые генерируются Axis. (не спрашивай)

Как я могу получить фактическое сообщение SOAP из ответа службы?

Из того, что я могу понять в результате поиска, я должен получить MessageContext. Я пробовал что-то в этом роде ...

MessageContext mc = MessageContext.getCurrentContext (); Строковое сообщение = mc.getCurrentMessage (). GetSOAPPartAsString ();

Но в этом случае mc имеет значение null ....

Любая помощь приветствуется!


person rshepherd    schedule 20.10.2009    source источник


Ответы (2)


Вот как это делается.

http://users.skynet.be/pascalbotte/rcx-ws-doc/jaxrpchandler.htm

person rshepherd    schedule 20.10.2009
comment
Не могли бы вы расширить ответ? Помимо возможного гниения ссылок в будущем (ура, 6 лет!), На странице по ссылке есть много кода, и не сразу видно, как это делается. Поэтому краткое изложение здесь только с соответствующим фрагментом кода (а не всей стеной кода) будет очень полезно! - person ADTC; 22.04.2015
comment
Ссылка битая, можно ответ обновить? - person stefan-dan; 03.06.2021

Когда объект _call заполнен, вызов в строке ниже дает это.

String request=_call.getMessageContext().getRequestMessage() .getSOAPPart().getEnvelope().toString();

Для ответа используйте приведенный ниже

_call.getMessageContext().getResponseMessage() .getSOAPPart().getEnvelope().toString()

Call - это org.apache.axis.client.Call, как вы знаете.

person Davut Gürbüz    schedule 18.04.2016