我需要调查服务器上的超时问题,并且需要发出大的HTTP post请求。 是否有一些使用curl创建大型HTTP post请求的简单方法,或者是否有更好的工具。
curl -X POST -d {10mb random string} localhost:8080/test
答案 0 :(得分:1)
创建一个10M的文件
dd if=/dev/urandom of=output.dat bs=1M count=10
然后使用Curl
发送文件 curl -X POST -d @output.dat localhost:8080/test
这是你在找什么?
来自manpage:
-d, - data
(HTTP)将POST请求中的指定数据发送到HTTP服务器, 与用户填写HTML时浏览器的操作方式相同 表单并按下提交按钮。这将导致卷曲通过 使用content-type将数据发送到服务器 应用程序/ x-WWW窗体-urlencoded。比较-F, - form。
- data-raw几乎相同,但没有对@字符的特殊解释。要发布纯二进制数据,你 应该使用--data-binary选项。对值进行URL编码 您可以使用的表单字段--data-urlencode。
如果在同一命令中多次使用这些选项中的任何一个 在行中,指定的数据将与a合并在一起 分离& -symbol。因此,使用'-d name = daniel -d skill = lousy'会 生成一个看起来像'name = daniel& skill = lousy'的帖子块。
如果用字母@开始数据,其余的应该是一个文件 用于读取数据的名称,或者 - 如果您希望curl读取数据 来自stdin。也可以指定多个文件。从中发布数据 因此,名为'foobar'的文件将使用-d, - data @foobar完成。什么时候 --data被告知从这样的文件中读取,回车和换行将被删除。如果你不想要@字符 有一个特殊的解释用途--data-raw代替。
另请参阅--data-binary和--data-urlencode以及--data-raw。这个 选项覆盖-F, - form和-I, - head和--upload。