Jmeter中预处理时如何进行HTTP-Request?

Aka*_*hta 3 preprocessor http jmeter

在实际测试执行之前,我想调用一些 HTTP API 并从中解析响应,然后再将其处理到我的 SSH 命令采样器。在 Jmeter 中最好的方法是什么?就像 JDBC 请求有一个预处理器一样,为什么 HTTP 请求没有预处理器呢?

Dmi*_*i T 6

您可以使用JSR223 PreProcessor使用底层Apache HttpComponent库发出任意 HTTP 请求。

  1. 添加 JSR223 预处理器作为 SSH 命令采样器的子项
  2. 将以下代码放入“脚本”区域:

    import org.apache.http.client.methods.HttpGet
    import org.apache.http.impl.client.HttpClientBuilder
    import org.apache.http.util.EntityUtils
    
    def httpClient = HttpClientBuilder.create().build()
    def httpGet = new HttpGet("http://example.com")
    def httpResponse = httpClient.execute(httpGet)
    def responseData = EntityUtils.toString(httpResponse.getEntity())
    
    log.info('----- Response -----')
    log.info(responseData)
    vars.put('response', responseData)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 上面的代码对http://example.com网站执行简单的HTTP GET请求,打印对jmeter.log 的响应,并将其另外存储到JMeter 变量中,您可以在以后需要时重用该变量。${response}

演示:

JMeter Groovy 执行 HTTP 请求

参考: