首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >截取SOAP中的SOAP响应

截取SOAP中的SOAP响应
EN

Stack Overflow用户
提问于 2017-10-06 16:09:05
回答 1查看 854关注 0票数 2

webservice返回

代码语言:javascript
复制
<SOAP: Envelope>
<SOAP: Header>
    <SOAP: Body>
        <RootElement>
        <![CDATA[Base64 encoded string]]>
        </RootElement>
    </SOAP : Body>
</SOAP: Header>

Base64编码的字符串实际上是EXI编码的XML。我知道如何解码基64,然后将EXI转换为XML。让我们调用MyEXIEncoder.class (Java类)

但是,我们目前有很多基于XML响应的SOAP测试用例。

目前,唯一的方法似乎是添加一个groovy脚本来调用我的java类,但这是一个额外的测试步骤,这意味着我必须编写一些脚本来更新我的SOAP测试用例。更多的是,我不确定我的断言将如何工作,以及对于我的测试用例(我有几百个测试用例)会发生多大的变化。

我需要一个办法

从测试步骤中截取SOAP响应,使用执行解码的自定义类,并返回响应返回SOAP,以便现有断言能够工作。

任何帮助都是非常感谢的!

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-06 16:22:10

添加监视器侦听器,如这里所示

e.g

代码语言:javascript
复制
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的注释,使用链接进行更新以使用上下文。

根据SOAPUI的技巧和技巧点6,使用RequestFilter.afterRequest可以将响应设置回。

代码语言:javascript
复制
// write it back 
context.httpResponse.responseContent = content

MonitorListener.afterProxy不提供上下文对象。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46609839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档