通过命令行和 curl 发送 HTTP 请求

通过命令行和 curl 发送 HTTP 请求

我在 raspberry pi (raspian) 上运行云服务器,并想告诉我的主机 IP 地址。为此,我的 URL 提供商提供了一个 API,其工作方式是发送:

https://<provider_url>/upd.php?user=<username>&pwd=<pwd>&host=<hostname>

如果我将其输入到浏览器中(显然带有正确的参数),我会收到消息“主机名已更新”。

为了自动化这个过程,我想通过命令行做同样的事情。在阅读了 curl命令后,我尝试了

curl --data "user=<username>&pwd=<pwd>&host=<hostname>" https://<provider_url>/upd.php

因为给出的字符串--data应该用“?”附加到 URL 中,并且每个参数都用“&”分隔。但是,我在“inv

答案1

因为给出的字符串--data应该附加到 URL 中?

你忽略了这一点[强调我的]:

-d--data <data>

(HTTP)以邮政向 HTTP 服务器发出请求 […]

-G--get

使用此选项时,将使所有用 、 或 指定的数据-d--dataHTTP中使用--data-binary--data-urlencodeGET 请求代替 POST 请求否则将被使用。数据将使用?分隔符附加到 URL。

(来源)

使用整个原始字符串作为 URL 也应该可行。请注意引号:

curl 'https://<provider_url>/upd.php?user=<username>&pwd=<pwd>&host=<hostname>'

相关内容