代码之家  ›  专栏  ›  技术社区  ›  The g

在SOAP UI中拦截SOAP响应

  •  2
  • The g  · 技术社区  · 7 年前

    webservice返回

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

    Base64编码字符串实际上是EXI编码的XML。我知道如何解码base 64,然后将EXI转换为XML。我们称之为髓鞘编码器。类(Java类)

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

    我需要一种方法

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

    任何帮助都将不胜感激!

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Optional    7 年前

    添加监视器侦听器,如图所示 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 
    

    根据 Tip and tricks of SOAPUI 第6点。使用 RequestFilter.afterRequest 可以将响应设置回原位。

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

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

    请求筛选器。请求后 +使用 context 结果证明是更好的解决方案。