在 jmeter 中设置整个请求 url

Set the whole request url in jmeter

我有一个请求,将上传 url 作为响应正文。

{
    "uploadUrl": "https://test.com:9000/sample_uploadurl"
}

我可以使用 JSON 提取器提取 uploadUrl

我想在下一个 http 请求中使用上面的上传 url。如何在这里设置新请求?

直接添加 doent 工作,因为 JMeter 在请求之前添加 http/https,在这种情况下我们已经有了 https。

It got failed because it has https://[https://test.com:9000/sample_uploadurl]

HTTP Request 字段留空,路径除外,将变量放在那里,它将被执行

As a special case, if the path starts with "http://" or "https://" then this is used as the full URL.

例子

选项在:

  1. 将整个 ${UPLOAD_URL} 放到 HTTP 请求采样器的 "Path" 字段,例如:

    但是这种方法可能不稳定,会导致某些配置元素出现故障,例如 HTTP Cookie Manager。所以最好选择选项 2。

  2. ${UPLOAD_URL} 拆分为单独的组件,如协议、主机、端口和路径。

    • 在JSON提取器
    • 之后添加JSR223 PostProcessor
    • 将以下Groovy代码放入"Script"区域:

      URL url = new URL(vars.get('UPLOAD_URL'))
      
      vars.put('protocol', url.getProtocol())
      vars.put('host', url.getHost())
      vars.put('port', url.getPort() as String)
      vars.put('path', url.getPath())
      
    • 以上代码会生成如下JMeter Variables

    • 因此您应该可以在下一个 HTTP 请求采样器中使用生成的变量: