【问题标题】:How to capture response of a Bean shell sampler如何捕获 Bean shell 采样器的响应
【发布时间】:2017-08-28 13:14:16
【问题描述】:

上面是我编写的代码,用于访问其端点需要字节流对象的 Web 服务。 我能够做到这一点,但我没有得到任何回应。 我必须测试响应。 虽然我得到了 200 ok,但是发送了一个字符串作为我没有得到的响应。

回复是空白的

我怎样才能得到响应?

【问题讨论】:

    标签: java jmeter performance-testing beanshell


    【解决方案1】:
    1. 要读取服务器的响应,您需要使用 URLConnection.getInputStream() method,而不是 OutputStream
    2. 为了将流转换为字符串,您可以使用IOUtils.toString() method
    3. 为了返回数据,您可以使用return keyword
    4. 最小的工作代码如下,根据您的需要进行调整:

      import java.net.HttpURLConnection;
      import java.net.URL;
      import java.nio.charset.StandardCharsets;
      import org.apache.commons.io.IOUtils;
      
      URL url = new URL("http://example.com");
      HttpURLConnection con = (HttpURLConnection) url.openConnection();
      con.setRequestMethod("GET");
      String response = IOUtils.toString(con.getInputStream(), StandardCharsets.UTF_8);
      return response;
      

    【讨论】:

    • 我的网络服务不支持获取请求。
    • 没关系,只需在脚本末尾添加String response = IOUtils.toString(con.getInputStream(), StandardCharsets.UTF_8); return response; 行,您应该会看到响应数据
    • 不要忘记将这些行添加到脚本的开头import java.nio.charset.StandardCharsets; import org.apache.commons.io.IOUtils;
    • 还有一件事,它是否像速度明智的 Java 请求 > JSR223 > Beanshell...?
    • Java Request 最快,JSR223 with Groovy 次之,Beanshell 最慢:Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!
    【解决方案2】:

    您可以使用SampleResult 对象添加您的输出:

    String output = "...";
    
    SampleResult.setResponseData( output );
    SampleResult.setDataType( org.apache.jmeter.samplers.SampleResult.TEXT );
    

    【讨论】:

    • 你想让我在 BeanShell 采样器中添加这段代码吗...原样?
    • 它不工作。收到错误 Jmeter.exception: 调用 bsh 方法时出错:...
    • 如果你只用我的代码创建一个新的 beanshell 采样器,它可以工作吗?
    • 它是这样工作的:SampleResult.setResponseData(Respvar.toString());
    • 我在你的问题中看不到完整的代码。所以我给出了通用的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    相关资源
    最近更新 更多