我正在尝试使用OS Process Sampler在Jmeter测试计划中执行HTTP请求,但是我在curl参数之一上遇到了错误。我正在Windows计算机上运行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”参数,可能是因为两个破折号(“-”)。 / p>
我猜测的原因是较早的时候,我遇到了证书参数“ --cert”的问题,并且能够通过更改为“ -E”参数来消除较早的问题。有一个破折号。
不幸的是,密钥文件似乎没有一个单破折号参数。
有人可以告诉我为什么我尝试在Jmeter下运行curl时出现此错误,但是从命令行运行curl没关系吗?
谢谢!
P.S。仅供参考,我尝试通过OS Process Sampler而不是HTTP请求发送请求的原因是URI包含导致HTTP请求步骤引发URI异常的某些字符。我无法对该URI进行编码,因为它具有某种哈希值,并且如果我对URL进行编码,这将导致URI在服务器端必须是错误的,所以我试图查看是否可以使用OS Process Sampler进行替换。>
答案 0 :(得分:1)
这是配置OS Process Sampler的方式:
答案 1 :(得分:1)
选项1
行为良好的JMeter测试必须做真实用户正在做的事情,特别是在您的情况下,我期望您正在从CMD或Powershell
启动curl所以我的期望是您应该将配置修改为:
选项2
如果您打算执行HTTP请求,我希望最明显的选择是使用HTTP Request采样器。
您只需使用JMeter的HTTP(S) Test Script Recorder记录您的CURL调用,即可通过-x
command-line option将curl配置为用户JMeter的代理,例如:
curl -x http://localhost:8888 -k -L -b .\cookies -c .\cookies ......
关于passing client-side certificate using JMeter-可以使用SSL Manager或系统属性来完成。
选项3
请注意,在99%的情况下,使用JSR223 Sampler来执行任意OS命令更容易,语法类似于:
return "your command here".execute().text
演示(我将输出打印到 jmeter.log 文件中,而不是将其作为示例结果返回):