【问题标题】:SOAPUI mock service as proxy using groovy scriptSOAPUI 模拟服务作为使用 groovy 脚本的代理
【发布时间】:2016-01-26 07:26:20
【问题描述】:

我正在尝试使用 groovy 脚本将 SoapUI 模拟服务用作代理。我试图通过将请求重定向到不同的端点来实现这一点。但是我得到的响应是“使用脚本调度失败;java.io.IOException:服务器返回HTTP响应代码:500”

我正在使用以下答案来编写我的代码。

SoapUI MockService: Work as proxy

有人能指出我在以下代码中做错了什么吗?

def keyStorePath = "E:\\ws.jks";
def keyStorePassword = "cgpwd";
def trustStorePath = "E:\\ws.jks";
def trustStorePassword = "cgpwd";

def keyStoreFactory = javax.net.ssl.KeyManagerFactory.getInstance("SUNX509");
def trustStoreFactory = javax.net.ssl.TrustManagerFactory.getInstance("SUNX509");
def keyStore = java.security.KeyStore.getInstance("JKS");
def trustStore = java.security.KeyStore.getInstance("JKS");

def keyInput = new FileInputStream(keyStorePath);
keyStore.load(keyInput, keyStorePassword.toCharArray());
keyInput.close();

def trustInput = new FileInputStream(trustStorePath);
trustStore.load(trustInput, trustStorePassword.toCharArray());
trustInput.close();

keyStoreFactory.init(keyStore, keyStorePassword.toCharArray());
trustStoreFactory.init(trustStore);

def sslContext = javax.net.ssl.SSLContext.getInstance("TLS");
sslContext.init(keyStoreFactory.getKeyManagers(), trustStoreFactory.getTrustManagers(), new java.security.SecureRandom());

def sslFactory = sslContext.getSocketFactory();

def soapRequest = mockRequest.requestContent;
def soapUrl = new URL("https://test.webservice.dummyservice.com");
def connection = soapUrl.openConnection();

connection.setRequestMethod("POST");
connection.setRequestProperty("Accept-Encoding" ,"gzip,deflate");
connection.setRequestProperty("Content-Type" ,"text/xml;charset=UTF-8");
connection.setRequestProperty("SOAPAction", mockRequest.getSoapAction());
//connection.setRequestProperty("Content-Length", "13986");
//connection.setRequestProperty("Connection", "Keep-Alive");
//connection.setRequestProperty("User-Agent", "Apache-HttpClient/4.1.1 (java 1.5)");
//connection.setRequestProperty("Host", "test.webservice.dummyservice.com");
connection.setSSLSocketFactory(sslFactory);
connection.doOutput = true;

Writer writer = new OutputStreamWriter(connection.outputStream);
writer.write(soapRequest);
writer.flush();
writer.close();

connection.connect();
def soapResponse = connection.content.text;

requestContext.responseMessage = soapResponse;

【问题讨论】:

    标签: web-services redirect groovy proxy soapui


    【解决方案1】:

    其实这里的问题是,当web服务返回soap错误时,connection.content.text会在尝试访问connection.content时抛出上述异常>。在其他情况下,connection.content.text 会返回响应。

    我在场景中遇到的另一个问题是,响应是使用 gzip 压缩的。所以我不得不使用下面的代码解压它。

    def zipInputStream = new GZIPInputStream(connection.getInputStream());
    def soapResponse = zipInputStream.getText("UTF-8");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      相关资源
      最近更新 更多