curl --data "<xml>" --header "Content-Type: text/xml" --request PROPFIND url.com
通过阅读 curl 手册页,我无法理解上述命令行是如何使用--data
选项的。
问题:
- 上面的命令行是做什么的?
- 为什么手册页不描述这种用法?如果确实如此,那么在阅读手册页后我有什么不明白的?
该--data
标志用于定义POST
数据。
该命令发送一个POST
内容<xml>
和 MIME 类型text/xml
。但是,使用标志--request
,您将 HTTP 方法设置为 fromPOST
并将PROPFIND
请求发送到url.com
。
我也确实设法--data
在手册中找到了标志:
-d, --data <data>
(HTTP) 将 POST 请求中的指定数据发送到 HTTP 服务器,就像浏览器在用户填写 HTML 表单并按下提交按钮时所做的一样。这将导致 curl 使用内容类型 application/x-www-form-urlencoded 将数据传递给服务器。与 -F、--form 进行比较。
-d, --data 与 --data-ascii 相同。要发布纯二进制数据,您应该改用 --data-binary 选项。要对表单字段的值进行 URL 编码,您可以使用 --data-urlencode。
如果在同一命令行上多次使用这些选项中的任何一个,则指定的数据片段将使用分隔符号 &-symbol 合并在一起。因此,使用'-d name=daniel -d Skill=lousy'会生成一个看起来像'name=daniel&skill=lousy'的帖子块。
如果您以字母 @ 开始数据,则其余部分应该是从中读取数据的文件名,或者 - 如果您希望 curl 从标准输入中读取数据。文件的内容必须已经是 URL 编码的。也可以指定多个文件。因此,将使用 --data @filename 从名为“foobar”的文件发布数据。当 --data 被告知从这样的文件中读取时,将删除回车符和换行符。