我想使用 CURL 提交数百个 HTTP 请求,最好是并行提交。此请求只需向服务器提交一个值。我如何才能独立于操作系统做到这一点?我开始编写一个。TXT文件有很多行,如下所示:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" url = http://localhost:8080/sales?salesAmount=111.91
仅数量会有所不同。
也许更好:该文件每行只包含一个金额,CURL 命令循环遍历该文件,并将每行读取为要插入到 CURL 命令中的参数!?类似于:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "salesAmount={???} http://localhost:8080/sales
其中{???}
应填充从.txt文件中读取的值。
答案1
目前 curl 不支持并行传输,但这种情况将在 6 天后发生变化。2019 年 9 月 11 日,curl 版本 7.66.0 将发布,该版本支持全新的--parallel
参数,用于并行发送请求。
如果你的 curl 版本 >= 7.66.0,你可以这样做
curl --parallel $(cat list.txt)
如果没有,那么您可以使用 xargs 达到同样的效果:
cat list.txt | xargs --max-procs=50 curl
至于可移植性,大多数现代 unix 系统 (Linux/MacOS/*BSD/Illumos) 默认附带 cat 和 xargs,但 Windows 没有(但它们可以通过以下方式安装在 Windows 上赛格威或者西弗吉尼亚海岸)