有字段:
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
是必需的,否则不会出现进度条。
对于包含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请求发送。
来自 stdin 的数据与 -d @-
****
例:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
输出:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
是在Curl例子手册中找到的例子。
如果您想登录网站,请执行以下操作:
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
第一次请求会在 “headers "文件中保存会话cookie(登录成功后提供的)。从现在起,您可以使用该cookie来验证您在使用浏览器登录后访问网站的任何部分。
curl -v --data-ascii var=value http://example.com
,还有更多选择,更多信息请查看curl --help
。
如果你很懒,你可以让google-chrome或firefox帮你完成所有的工作。右键点击你要提交的表单,然后选择Inspect(或Firefox的Inspect Element)。这将打开DevTools面板。 2. 选择 devtools 中的 Network 选项卡,然后勾选 Preserve log 复选框 (Firefox 的 Persist Logs)。提交表单,找到带有POST方法的条目(右键点击任意列标题,并确定Method被选中)。右键点击POST,然后选择复制> *复制为cURL***。
这将被作为--data 'param1=hello¶m2=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