2
curl --data "<xml>" --header "Content-Type: text/xml" --request PROPFIND url.com

通过阅读 curl 手册页,我无法理解上述命令行是如何使用--data选项的。

问题:

  1. 上面的命令行是做什么的?
  2. 为什么手册页不描述这种用法?如果确实如此,那么在阅读手册页后我有什么不明白的?
4

1 回答 1

1

--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 被告知从这样的文件中读取时,将删除回车符和换行符。

于 2013-09-16T04:25:04.990 回答