myfreax

如何使用cURL发送POST请求

cURL是命令行程序,用于使用一种受支持的协议从远程服务器下载文件或将数据传输到远程服务器

4 min read
By myfreax
如何使用cURL发送POST请求

cURL是命令行程序,用于使用一种受支持的协议从远程服务器下载文件或将数据传输到远程服务器。默认情况下,它已安装在macOS和大多数Linux发行版上。

cURL被开发人员用于测试API,查看响应头header和发起HTTP请求。

在教程中,将说明如何使用cURL发送POST请求。HTTP POST方法主要用于将数据发送到远程服务器。

我们也说明了如何使用curl模拟HTML表单发送post请求,上传文件,指定内容类型Content-Type等。

使用curl发送POST请求

这是使用curl发送POST请求的基本语法curl -X POST [options] [URL]

-X选项指定与远程服务器通信时将使用的HTTP请求方法。在本教程我们仅说明POST方法,因此使用-X 是POST。

在发送POST请求时你可使用Content-Type内容类型声明请求正文的数据格式。即body的数据类型。

通常,POST请求是通过HTML表单发送的。表单的数据通常以multipart/form-dataapplication/x-www-form-urlencoded进行编码。

如果你需要使用curl模拟表单的请求,可使用curl的-F选项创建multipart/form-data的POST请求。-F选项允许你指定multipart的数据。curl使用也会将内容类型设置为multipart/form-data发送数据。

curl允许你指定重复使用-F选项指定多个数据,数据的形式是以field=value键值对的方式指定。

例如以下curl命令将模拟HTML表单发送两个字段的数据,字段website的值是myfreax.com,email字段的值是web@myfreax.com。最后是指定请求的URL。

curl -X POST -F 'website=myfreax.com' -F 'email=web@myfreax.com' https://wwww.myfreax.com/contact.php

发出POST请求的另一种方法是使用curl的-d选项。在使用-d选项时curl将使用application/x-www-form-urlencoded 对数据进行编码。

也会指定内容类型为application/x-www-form-urlencoded。使用这种方式发送的请求,就是使用查询字符串发送数据。

如果你需要发送大量的数据你不必多次使用-d选项,可以使用&符号合并数据,比如website=myfreax&email=myfreax@example.com。

curl -X POST -d 'name=myfreax' -d 'email=myfreax@example.com' https://example.com/contact.php
#上面和下面的命令是等价的
curl -X POST -d 'name=myfreax&email=myfreax@example.com' https://example.com/contact.php

Curl发送JSON

如果你需要在请求体,也就是POST的Body中发送JSON格式的数据,你必须指定内容类型为application/json

curl的-H选项允许你指定任何内容类型,但是某些内容类型需要服务器的支持,否则不会被处理或者返回服务器错误。

以下curl命令将POST请求的内容类型设置为application/json并发送JSON字符串数据。

curl -X POST -H "Content-Type: application/json" \
    -d '{"email": "web@myfreax.com", "website": "www.myfreax.com"}' \
    https://example/contact

上传文件

使用curl上传文件,只需在文件位置之前添加@符号。该文件可以是任何类型文件包括图像,文档等。

这里还有一点值得一提的是curl好像不能在发送文件的时候,同时指定内容类型为application/json,也就是发送json数据。

这是因为在-F选项CURL将自动设置内容类型为application/x-www-form-urlencoded,在一个请求中也不能设置两个内容类型。

curl -X POST -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload

更多示例

Curl命令示例 | myfreax
curl是用于在本地计算机与远程服务器之间传输数据的命令行工具。使用curl时您可以使用HTTP,HTTPS, SCP , SFTP和FTP等协议下载或上传数据

结论

我们已向您展示了如何使用curl进行POST请求。 如需参考更多示例,请访问此教程,有关curl的更多信息,请访问Curl文档页面。如果您有任何问题或反馈,请随时发表评论。

Related Articles