在 SOAP UI 中拦截 SOAP 响应
Intercept SOAP response in SOAP UI
一个网络服务 returns
<SOAP: Envelope>
<SOAP: Header>
<SOAP: Body>
<RootElement>
<![CDATA[Base64 encoded string]]>
</RootElement>
</SOAP : Body>
</SOAP: Header>
Base64编码的字符串实际上是EXI编码的XML。我知道如何解码 base 64,然后将 EXI 转换为 XML。让我们称之为 MyEXIEncoder.class (Java class)
但是,我们目前有很多基于 XML 响应的 SOAP UI 测试用例。
目前唯一的方法似乎是添加一个可以调用我的 java class class 的 groovy 脚本,但这是一个额外的测试步骤,这意味着,我必须编写一些脚本来更新我的 SOAP UI 测试用例。此外,我不确定我的断言将如何工作以及我的测试用例会有多少变化(我有数百个测试用例)
我需要一种方法
拦截来自我的测试步骤的 SOAP 响应,使用我的自定义 class 进行解码,return 响应返回 SOAP UI 以便现有断言可以工作。
如有任何帮助,我们将不胜感激!
提前致谢。
如图所示添加监听监听器here
例如
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
Edit : Based on the comment of OP, updating with the link to use context.
根据 Tip and tricks of SOAPUI 第 6 点。使用 RequestFilter.afterRequest
可以设置响应。
// write it back
context.httpResponse.responseContent = content
MonitorListener.afterProxy
不给出上下文对象。
RequestFilter.afterRequest
+ 使用 context
结果证明是更好的解决方案。
一个网络服务 returns
<SOAP: Envelope>
<SOAP: Header>
<SOAP: Body>
<RootElement>
<![CDATA[Base64 encoded string]]>
</RootElement>
</SOAP : Body>
</SOAP: Header>
Base64编码的字符串实际上是EXI编码的XML。我知道如何解码 base 64,然后将 EXI 转换为 XML。让我们称之为 MyEXIEncoder.class (Java class)
但是,我们目前有很多基于 XML 响应的 SOAP UI 测试用例。
目前唯一的方法似乎是添加一个可以调用我的 java class class 的 groovy 脚本,但这是一个额外的测试步骤,这意味着,我必须编写一些脚本来更新我的 SOAP UI 测试用例。此外,我不确定我的断言将如何工作以及我的测试用例会有多少变化(我有数百个测试用例)
我需要一种方法
拦截来自我的测试步骤的 SOAP 响应,使用我的自定义 class 进行解码,return 响应返回 SOAP UI 以便现有断言可以工作。
如有任何帮助,我们将不胜感激!
提前致谢。
如图所示添加监听监听器here
例如
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
Edit : Based on the comment of OP, updating with the link to use context.
根据 Tip and tricks of SOAPUI 第 6 点。使用 RequestFilter.afterRequest
可以设置响应。
// write it back
context.httpResponse.responseContent = content
MonitorListener.afterProxy
不给出上下文对象。
RequestFilter.afterRequest
+ 使用 context
结果证明是更好的解决方案。