如何使用 cURL 发送 POST 请求

cURL 是一款多功能命令行实用程序,旨在跨不同网络协议(包括 HTTP、HTTPS 和 FTP)无缝传输数据。cURL 适用于所有主流操作系统,已成为从命令行发送 HTTP 请求的标准工具。其跨平台实用程序支持 HTTP、HTTPS、FTP 和 IMAP 等协议,可轻松向 API 发送请求并抓取网站数据。由于其广泛的可用性和协议支持,cURL 通常在 REST API 文档中被引用为一种直接从命令行测试 API 调用的快速方法。
本教程深入研究如何使用 cURL 执行 POST 请求,实现通过简单的命令行指令与服务器进行有效的通信。
什么是 POST 请求?
POST 请求是一种用于向服务器发送数据的 HTTP 方法,也是最常见的 HTTP 方法之一。与 GET 请求(其中数据包含在 URL 中)不同,POST 请求在请求正文中传输数据。这允许谨慎地传输数据,并避免浏览器对 GET 请求施加的 URL 长度限制。
POST 请求通常用于表单提交、文件上传以及向 API 发送 JSON 数据。由于数据存储在请求正文中,因此在浏览器历史记录中不可见,并且与 GET 请求不同,POST 请求通常不会被浏览器缓存。
cURL POST 请求的实际用例
cURL POST 请求广泛应用于各种场景,包括:
- 测试 REST API – 开发人员在应用程序中实现 API 端点之前使用 cURL 快速测试它们。
- 自动表单提交——通过使用 cURL,您可以自动与 Web 表单交互,无需手动输入即可提交数据。
- 上传文件– 许多 API 允许使用 POST 请求上传文件,这使得 cURL 成为自动化此过程的有效工具。
- 与身份验证系统交互——开发人员可以使用 cURL 来验证用户身份,并使用 API 令牌或凭证访问受保护的资源。
- 数据抓取和集成——使用 cURL 的 POST 请求功能可以简化从不同在线来源提取和集成数据的过程。
使用 cURL 执行 POST 请求
要开始使用 cURL 进行 POST 请求,请确保它已安装在您的系统上。如果您尚未安装,请参阅我们的 cURL 设置指南。下面是总结基本 cURL 选项的参考表:
短旗 | 长旗 | 参数 | 描述 |
-X | - 要求 | (对于 POST 请求使用“POST”) | 定义请求的 HTTP 方法 |
-b | - 曲奇饼 | 在请求中发送 cookies | |
-c | --cookie 罐 | 将收到的 cookies 保存到文件中 | |
-d | - 数据 | 在 POST 请求中传输数据 | |
-f | - 失败 | 确保服务器错误悄无声息地发生 | |
-F | - 形式 | <名称=内容> | 提交表单数据(application/x-www-form-urlencoded) |
-H | --header | 标题/@文件 | 包括自定义 HTTP 标头 |
-我 | - 包括 | 显示响应中的 HTTP 标头 | |
-l | - 头 | 仅检索标题 | |
-k | --不安全 | 绕过 SSL 验证 | |
-L | - 地点 | 遵循重定向 (3XX) | |
-o | - 输出 | 保存输出到指定文件 | |
-O | --远程名称 | 使用远程文件名保存输出 | |
-s | - 沉默的 | 抑制输出消息 | |
-v | --详细 | 启用详细输出(调试) | |
-w | --写出 | 输出响应详细信息 |
要查看可用选项的完整列表,请使用:
curl --help
常见错误及其解决方法
尽管 cURL 功能强大,但用户在发送 POST 请求时经常会遇到错误。以下是一些常见问题和解决方案:
- curl:(6)无法解析主机– 这意味着域名不正确或存在 DNS 解析问题。请仔细检查 URL。
- curl: (7) 无法连接到主机– 表示无法访问服务器。请确保服务器在线并且您有有效的互联网连接。
- curl:(35)SSL 连接错误– 如果请求由于 SSL 问题而失败,请尝试使用 -k 绕过 SSL 验证。
- HTTP 400 错误请求– 这意味着服务器拒绝了请求,通常是由于数据格式不正确。请检查内容类型和数据负载。
- HTTP 401 未授权– 需要身份验证但身份验证缺失或不正确时发生。确保使用 -u 或 -H“Authorization: Bearer <token>”正确传递 API 密钥或凭据。
基本 POST 请求语法
curl -X POST -d "Hello" https://example.com/api
在此命令中:
- -X POST 指定请求类型。
- -d“Hello”定义正在发送的数据。
- https://example.com/api 是目标 URL。
设置 Content-Type 标头
curl -X POST -H“内容类型:text/plain”-d“你好”https://example.com/api
添加 -H“Content-Type:text/plain”通知服务器数据格式是纯文本。
发送 JSON 数据
curl -X POST -H “Content-Type:application/json” -d'{"key":"value"}' https://example.com/api
使用 application/json 作为内容类型可确保数据被正确解释为 JSON。
发送 XML 数据
curl -X POST -H "Content-Type: application/xml" -d '<?xml version="1.0" encoding="UTF-8"?><root><name>John Doe</name><age>30</age></root>' https://example.com/api
使用 POST 上传文件
curl -X POST -F "file=@/path/to/img.png" https://example.com/api/upload
对于多个文件上传:
curl -X POST -F “file=@/path/to/img1.png” -F “file=@/path/to/img2.png” https://example.com/api/upload
使用 cURL 进行身份验证
curl -u 用户名:密码 https://example.com/login
用实际凭证替换用户名和密码。
结论
cURL 凭借其强大而灵活的命令行选项简化了 HTTP 交互。通过掌握 POST 请求,开发人员可以高效地管理 API 通信、数据传输和文件上传。无论您需要测试 API 端点、自动提交表单还是从网站抓取数据,cURL 都能提供轻量级且有效的解决方案。继续尝试使用 cURL 来优化您的工作流程!
请注意,Plisio 还为您提供:
单击 2 次即可创建加密发票 and 接受加密捐赠
14 整合
- BigCommerce
- Ecwid
- Magento
- Opencart
- osCommerce
- PrestaShop
- VirtueMart
- WHMCS
- WooCommerce
- X-Cart
- Zen Cart
- Easy Digital Downloads
- ShopWare
- Botble
10 最流行的编程语言库
19 加密货币和 12 区块链
- Bitcoin (BTC)
- Ethereum (ETH)
- Ethereum Classic (ETC)
- Tron (TRX)
- Litecoin (LTC)
- Dash (DASH)
- DogeCoin (DOGE)
- Zcash (ZEC)
- Bitcoin Cash (BCH)
- Tether (USDT) ERC20 and TRX20 and BEP-20
- Shiba INU (SHIB) ERC-20
- BitTorrent (BTT) TRC-20
- Binance Coin(BNB) BEP-20
- Binance USD (BUSD) BEP-20
- USD Coin (USDC) ERC-20
- TrueUSD (TUSD) ERC-20
- Monero (XMR)