配置 jMeter Http Request 以模拟此 curl 命令

Posted

技术标签:

【中文标题】配置 jMeter Http Request 以模拟此 curl 命令【英文标题】:Configure jMeter Http Request to emulate this curl command 【发布时间】:2018-03-26 02:42:40 【问题描述】:

我在使用 curl 命令在 jMeter 中准备 HTTP 请求时遇到问题:

curl --insecure -X POST -H "Content-Type:multipart/form-data" --header 
'header-param-1: aGVhZGVyLXBhcmFtLTE=' --header 'header-param-2: aGVhZGVyLXBhcmFtLTI=' 
--header 'header-param-3: aGVhZGVyLXBhcmFtLTM=' -F "file=@C:\temp\file to upload.zip" 
--form "metadata=\"jsonParam1\": \"text1\", \"jsonParam2\": 999, \"jsonParam3\": 10222, 
\"jsonParam4\":  \"2017-10-13T23:23:02.677Z\", \"jsonParam5\": \"text5\", 
\"jsonParam6\": \"3\", \"fileName\": \"file to upload.zip\", 
\"fileType\": \"application/pdf\";type=application/json" 
"http://localhost:7001/context/rest/v1/uploadservice"

基本上,它以 multipart/form-data 格式发送文件,正文中的 json 作为 application/json 类型发送。 curl 命令按预期工作,但我无法让 jMeter 做同样的事情。

我试图找到合适的解决方案并最终承诺手动构建身体数据会有所帮助,但我没有运气。

我使用 Cygwin 进行 curl,因为我使用的是 Windows。我也尝试过使用postman,但也配置失败。

请帮忙。

【问题讨论】:

请向我们展示您在 jmeter 中的 Http 请求的屏幕截图 【参考方案1】:

只需记录请求。

    file to upload.zip复制到JMeter安装的“bin”文件夹中 从 JMeter 的主菜单中选择“文件 -> 模板 -> 录制”,然后单击“创建” 展开WorkBench -> HTTP(S) Test Script Recorder并点击“开始”

    像这样运行“curl”命令:

    curl -x http://localhost:8888 --insecure -X POST -H ......
    
    JMeter 将捕获您的请求并将其存储在Test Plan -> Thread Group -> Recording Controller

参考资料:

Apache JMeter proxy Step-by-step HTTP(S) Test Script Recorder Recording File Uploads with JMeter performing HTTP requests with cURL (using PROXY)

【讨论】:

【参考方案2】:

使用标头管理器作为子项创建 HTTP 请求

标头管理器在哪里:

HTTP 请求“Parameters”面板的配置如下:

还有“文件上传”面板:

【讨论】:

我已经尝试过了,但它不起作用。恐怕我需要通过“身体数据”手动完成。我现在正在努力使用这种方法。

以上是关于配置 jMeter Http Request 以模拟此 curl 命令的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter--HTTP请求默认值(HTTP Request Defaults)和访问地址参数化

JMeter 5.x 学习

Jmeter之入门基础-HTTP

Jmeter源码之HTTP Request Sampler分析

Jmeter----HTTP Request Defaults

jmeterHTTP属性管理器HTTP Cookie ManagerHTTP Request Defaults