Перехват SOAP-ответа в SOAP-интерфейсе

Веб-сервис возвращается

<SOAP: Envelope>
<SOAP: Header>
    <SOAP: Body>
        <RootElement>
        <![CDATA[Base64 encoded string]]>
        </RootElement>
    </SOAP : Body>
</SOAP: Header>

Строка в кодировке Base64 на самом деле является XML в кодировке EXI. Я знаю, как декодировать базу 64, а затем конвертировать EXI в XML. Давайте назовем это MyEXIEncoder.class (класс Java)

Однако в настоящее время у нас есть много тестовых случаев SOAP UI, основанных на ответах XML.

На данный момент кажется, что единственным способом является добавление скрипта groovy, который может вызывать мой класс java-классов, но это дополнительный шаг теста, а это значит, что мне пришлось бы написать какой-нибудь скрипт для обновления моих тестовых примеров SOAP UI. Более того, я не уверен, как мои утверждения будут работать и сколько изменений будет в моих тестовых случаях (у меня есть несколько сотен тестовых случаев)

Мне нужно средство

Перехватите ответ SOAP от моего шага тестирования, используйте мой пользовательский класс, который выполняет декодирование, и верните ответ обратно в пользовательский интерфейс SOAP, чтобы могли работать существующие утверждения.

Любая помощь будет принята с благодарностью!

Заранее спасибо.

1 ответ

Добавьте прослушиватель монитора, как показано здесь

например

Event Handler:
//MonitorListener.afterProxy

// get the raw response as a string
def str = new String( messageExchange.getResponseContent()  )

// Decode
 </ConversionRateResult", "Result>1.0</ConversionRateResult");

// save the response back
messageExchange.rawResponseBody = str 

Изменить: на основе комментария ОП, обновление со ссылкой для использования контекста.

В соответствии с советами и рекомендациями SOAPUI, пункт 6. Использование RequestFilter.afterRequest можно установить ответ обратно.

// write it back 
context.httpResponse.responseContent = content

MonitorListener.afterProxy не дает объект контекста.

RequestFilter.afterRequest + использование context оказалось лучшим решением.

Другие вопросы по тегам