Answers:
带有字段:
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手册。有关模拟Web浏览器的cURL教程很有帮助。
对于libcurl,curl_formadd()
在以通常的方式提交表单之前,使用该函数来构建表单。有关更多信息,请参见libcurl文档。
对于大文件,请考虑添加参数以显示上传进度:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
将-o output
是必需的,否则没有进度条就会出现。
--data-urlencode
(无破折号),至少在最新版本中
With Fields
,何时使用Multipart
,何时使用Without Data
?
--data
您可以使用-d
。
对于包含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
并将其作为发布请求发送。
curl -X POST
暗示一个HTTP POST请求,-d
参数(长版本:)--data
告诉curl 其后将是POST参数,并将@filename
文件的内容指定filename
为参数。这种方法与Twitter,Facebook,包括Ruby on Rails的各种其他Web服务以及数据库(如CouchDB)的HTTP API一起使用的RESTful HTTP API效果最佳。REST代表代表性状态转移
-X POST
因为暗示-d
。
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
是在“ Curl示例手册”中找到的示例。
如果上面的命令不起作用,请使用%26作为“&”号:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
如果要登录到站点,请执行以下操作:
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
第一个请求将会话cookie(成功登录后提供)保存在“标头”文件中。从现在开始,您可以使用该cookie对通过浏览器登录后通常访问的网站的任何部分进行身份验证。
curl -v --data-ascii var=value http://example.com
并且还有更多选择,请curl --help
查看更多信息。
如果您很懒惰,可以让google-chrome为您完成所有工作。
Chrome会使用cURL语法复制所有请求数据。
Chrome使用--data 'param1=hello¶m2=world'
它可以通过使用单一作更可读的-d
或-F
根据每个参数对哪种类型的POST请求的要发送,其可以是application/x-www-form-urlencoded
或multipart/form-data
相应。
这将被发布为application/x-www-form-urlencoded
(用于大多数不包含文件上传的表单):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
对于multipart/form-data
POST使用-F
(通常用于包含文件上传的表单,或者其中字段顺序很重要,或者需要多个具有相同名称的字段):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
该User-Agent
头通常不需要,但我万一丢进去。您可以通过创建~/.curlrc
包含以下内容的文件来避免必须为每个请求设置用户代理User-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data