在SOAP UI中拦截SOAP响应

时间:2017-10-06 16:09:05

标签: java web-services soapui soap-client exi

网络服务返回

<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,以便现有的断言可以正常工作。

非常感谢任何帮助!

提前致谢。

1 个答案:

答案 0 :(得分: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的注释,使用链接更新以使用上下文。

根据Tip and tricks of SOAPUI点6.使用RequestFilter.afterRequest可以设置回复。

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

MonitorListener.afterProxy没有给出上下文对象。

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