OS Process Sampler 中的 curl 参数有问题

Problem with a curl parameter in OS Process Sampler

我正在尝试使用 OS Process Sampler 在 Jmeter 测试计划中执行 HTTP(s) 请求,但我在其中一个 curl 参数上遇到错误。我在 Windows 机器上 运行ning Jmeter。

这是原始的 curl 命令,如果我从命令行 运行 它可以工作:

curl -k -L -b .\cookies -c .\cookies -E h:\curl\EXP\curl\bin\publicCert.pem.crt --key H:\curl\EXP\curl\bin\privateKey.pem.key https://myhost.foo.com//xxx.cgi?encreply=xxxxxxxxx

我在 Jmeter 中看到的错误是:

curl: option --key H:\curl\EXP\curl\bin\privateKey.pem.key: is unknown
curl: try 'curl --help' or 'curl --manual' for more information

认为(但不确定)问题是 Jmeter 似乎不喜欢“--key”参数,可能是因为 2 个破折号(“- -").

我猜的原因是之前我的证书参数有问题,它是“--cert”,我可以通过更改为“-E”参数来消除之前的问题, 其中有一个破折号。

不幸的是,密钥文件似乎没有单破折号参数。

有人能告诉我为什么当我尝试在 Jmeter 下 运行 curl 时出现该错误,但是当我从命令行 运行 curl 时没问题吗?

谢谢!

P.S。仅供参考,我尝试通过 OS Process Sampler 而不是 HTTP 请求发送请求的原因是 URI 有一些字符导致 HTTP 请求步骤抛出 URI 异常。我无法对该 URI 进行编码,因为它有某种哈希,如果我对 URL 进行编码,这会导致服务器端的错误,所以我想看看是否可以使用 OS 过程采样器。

这就是您要配置的方式 OS Process Sampler:

选项 1

良好的 JMeter 测试必须做真实用户正在做的事情,特别是你的情况我的期望是你从 CMD or Powershell

启动 curl

所以我希望您将配置修改为:


选项 2

如果您打算执行 HTTP 请求,我的期望是最明显的选择是使用 HTTP Request 采样器。

您可以简单地使用 JMeter 的 HTTP(S) Test Script Recorder, curl can be configured to user JMeter's proxy via -x command-line option 记录您的 CURL 调用,例如:

curl -x http://localhost:8888  -k -L -b .\cookies -c .\cookies ......

关于 passing client-side certificate using JMeter - it can be done using SSL Manager 或系统属性。


选项 3

请注意,在 99% 的情况下,使用 JSR223 Sampler 来执行任意 OS 命令更容易,语法类似于:

return "your command here".execute().text

演示(我将输出打印到 jmeter.log 文件,而不是将其作为示例结果返回):