2017-10-06 129 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監視器。我能夠進入事件處理部分。 –