2017-10-06 123 views
2

一个web服务返回截取SOAP响应

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

Base64编码串实际上是一个EXI编码的XML。我知道如何解码base 64,然后将EXI转换为XML。让我们称之为MyEXIEn​​coder.class(Java类)

然而,我们目前有很多的是基于XML响应SOAP UI测试案例。

目前唯一的方法似乎是添加一个可以调用我的java类类的groovy脚本,但这是一个额外的测试步骤,这意味着,我将不得不编写一些脚本来更新我的SOAP UI测试用例。更多在我不知道我的断言是如何工作的,以及如何太大的变化,这将是对我的测试案例(我有几百个测试用例)

我需要

拦截SOAP响应的手段从我的测试步骤,使用我的自定义类进行解码并将响应返回SOAP UI,以便现有的断言可以工作。

任何帮助沃尔德不胜感激!

在此先感谢。

回答

0

添加监视监听器,如图here

e.g

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 

编辑:基于OP的评论,与链接更新到使用环境。

如每使用一个RequestFilter.afterRequest可以设置响应返回Tip and tricks of SOAPUI点6。

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

MonitorListener.afterProxy不给上下文对象。

RequestFilter.afterRequest +使用context竟然是更好的解决方案。

+0

谢谢。我将探索您提供的链接。 –

+0

我试过了代码片段。它不起作用。所以我试着只做一些日志语句来检查事件处理程序是否被触发。我看不到Ready API屏幕日志部分中的日志语句。我使用的准备2.1.0 API和代码我用'log.error(“%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%:“);'@optional –

+0

今天的更新 - 我现在可以看到在MonitorListener.afterProxy事件处理我的日志条目。我在首选项下设置了代理,并且我正在运行HTTP监视器,因此事件处理程序未触发。我以后删除了代理并仅使用了HTTP监视器。我能够进入事件处理部分。 –