5

如何使用cURL发出POST请求 | myfreax

 1 year ago
source link: https://www.myfreax.com/curl-post-request/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何使用cURL发送POST请求

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

Updated At 27 Sep 2022 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字段的值是[email protected]。最后是指定请求的URL。

curl -X POST -F 'website=myfreax.com' -F '[email protected]' 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 protected]

curl -X POST -d 'name=myfreax' -d '[email protected]' https://example.com/contact.php
#上面和下面的命令是等价的
curl -X POST -d 'name=myfreax&[email protected]' 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": "[email protected]", "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-command-examples.webp

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK