使用SOAPUI作为一种网关

时间:2016-04-07 11:35:32

标签: eclipse web-services groovy soapui

我想问你是否可以在SOAPUI中更改模拟响应,并将其链接到MockService所基于的真实Web服务操作。

我需要这样做,因为在SOAPUI中我可以访问外部Web服务;但出于安全/配置原因,我无法访问Eclipse中本地代码中的外部Web服务(我在Eclipse中尝试了几种代理配置但没有成功)。

我想要做的是将到达模拟服务的请求传递给原始Web服务,并在不进行操作的情况下返回响应。

1 个答案:

答案 0 :(得分:0)

我终于把'Dispatch'变成了SCRIPT并添加了这个脚本:

// import all the namespaces to trim the lines of codes
import com.eviware.soapui.impl.wsdl.WsdlProject
import com.eviware.soapui.impl.wsdl.WsdlInterface
import com.eviware.soapui.impl.wsdl.WsdlRequest
import com.eviware.soapui.impl.wsdl.WsdlSubmitContext
import com.eviware.soapui.impl.wsdl.WsdlSubmit
import com.eviware.soapui.model.iface.Response
import com.eviware.soapui.model.mock.MockResponse

// get reference to project
WsdlProject project = (WsdlProject)mockOperation.mockService.project

// get reference to request
WsdlRequest request = (WsdlRequest)project.interfaces["TheRealWebService"].operations["TheRealOperation"].getRequestByName("TheRealRequest")

// set request content from incoming mockRequest
request.setRequestContent(mockRequest.getRequestContent())

// submit request asynchronously
WsdlSubmit submit=request.submit( new WsdlSubmitContext( request ), false )

// wait for the response
Response response = submit.getResponse();

// get reference to MockResponse
MockResponse mockResponse=mockOperation.getMockResponseByName("Response1")

// set the mock response content from response received by the request.
mockResponse.setResponseContent(response.getContentAsString())