2008-09-17 15:39:01 +0000 2008-09-17 15:39:01 +0000
2240
2240

cURL命令行语法是什么?

如何使用cURL命令行工具进行POST请求?

答案 (7)

2607
2607
2607
2008-09-17 15:43:28 +0000

有字段:

curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi

有字段单独指定:

curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi

多部分: curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi

多部分有字段和文件名:

curl --data '' https://example.com/resource.cgi

curl -X POST https://example.com/resource.cgi

curl --request POST https://example.com/resource.cgi

没有数据:

curl --tr-encoding -X POST -v -# -o output -T filename.dat \
  http://example.com/resource.cgi

更多信息请参见cURL手册。关于模拟网页浏览器的cURL教程很有帮助。

使用libcurl,在用通常的方式提交表单之前,使用curl_formadd()函数建立表单。

对于大文件,可以考虑添加参数来显示上传进度:

&001

-o output 是必需的,否则不会出现进度条。

517
517
517
2011-03-10 08:29:31 +0000

对于包含XML的RESTful HTTP POST:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"

,或者对于JSON,使用这个:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"

这将读取名为filename.txt的文件的内容,并将其作为POST请求发送。

137
137
137
2014-03-25 19:35:44 +0000

来自 stdin 的数据与 -d @-****

例:

echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown

输出:

<p>Hello <strong>world</strong>!</p>
69
69
69
2008-09-17 15:42:15 +0000
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi

是在Curl例子手册中找到的例子。

63
63
63
2012-03-04 02:21:37 +0000

如果您想登录网站,请执行以下操作:

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

第一次请求会在 “headers "文件中保存会话cookie(登录成功后提供的)。从现在起,您可以使用该cookie来验证您在使用浏览器登录后访问网站的任何部分。

35
35
35
2008-09-17 15:43:02 +0000
curl -v --data-ascii var=value http://example.com

,还有更多选择,更多信息请查看curl --help

33
33
33
2017-09-29 08:06:57 +0000

如果你很懒,你可以让google-chrome或firefox帮你完成所有的工作。右键点击你要提交的表单,然后选择Inspect(或Firefox的Inspect Element)。这将打开DevTools面板。 2. 选择 devtools 中的 Network 选项卡,然后勾选 Preserve log 复选框 (Firefox 的 Persist Logs)。提交表单,找到带有POST方法的条目(右键点击任意列标题,并确定Method被选中)。右键点击POST,然后选择复制> *复制为cURL***。

这将被作为--data 'param1=hello&param2=world'发送(用于大多数不包含文件上传的表单)。

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -d param1=hello \
    -d name=dinsdale

对于一个-d的POST使用-F (通常用于包含文件上传的表单,或者字段的顺序很重要,或者需要多个相同名称的字段):

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -F param1=hello \
    -F name=dinsdale \
    -F name=piranha

application/x-www-form-urlencoded头通常不需要,但我把它扔进去了。如果你需要一个自定义的代理,那么你可以通过创建multipart/form-data文件来避免在每个请求中设置它,该文件中包含了application/x-www-form-urlencoded