如何使用 curl 发出 POST 请求?

如何使用 curl 发出 POST 请求?

我如何制作邮政请求使用卷曲的命令行工具?

答案1

包含字段:

curl --data "param1=value1&param2=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 来验证您使用浏览器登录后通常访问的网站的任何部分。

相关内容