答案1
包含字段:
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 "[email protected]" https://example.com/resource.cgi
包含字段和文件名的多部分:
curl --form "[email protected];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 手册了解更多信息。HTTP 脚本 cURL 教程对于模拟网络浏览器也很有用。
使用libcurl
,使用该curl_formadd()
函数构建表单,然后以常规方式提交。请参阅libcurl 文档了解更多信息。
对于大文件,可以考虑添加参数来显示上传进度:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
是-o output
必需的,否则不会出现进度条。
答案2
对于包含 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 请求发送。
答案3
来自标准输入的数据-d @-
例子:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
输出:
<p>Hello <strong>world</strong>!</p>
答案4
如果您想登录某个网站,请执行以下操作:
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
第一个请求将会话 cookie(登录成功后提供)保存在“headers”文件中。从现在起,您可以使用该 cookie 来验证您使用浏览器登录后通常访问的网站的任何部分。