【问题标题】:Unix cURL POST to specific variable using contents from a fileUnix cURL POST 使用文件中的内容到特定变量
【发布时间】:2011-11-21 07:30:18
【问题描述】:

我已经搜索过这个答案,但没有找到任何有效或完全符合我的问题的答案。

使用 Unix cURL,我需要 POST 一个 key/val 对到服务器。键将是“MACs”,换行符分隔的 MAC 地址文件的内容将是此 ​​POST 的 VALUE。

我试过了:

curl -d @filename @987654321@,但是当目标接收到传入的 POST 时,POST var 为空。 (PHP 正在接收)。

我在这个网站上看到过其他形式的 curl,使用 --url-encode 表示它不是我系统上 curl 的有效选项...

如何使用 UNIX cURL 将文件的内容作为值发布到 POST 中的特定键?

【问题讨论】:

  • 如果您使用的是 unix 命令行,那么您也使用的是 shell。通过添加 bash 或 ksh 或 ??? 的标签,它将提高您获得有用答案的机会祝你好运。

标签: bash unix post curl


【解决方案1】:

根据 curl 手册页 -d 与 --data-ascii 相同。要将数据发布为二进制使用 --data-binary 并使用 url 编码发布使用 --data-urlencode。因此,如果您想发送 URL 编码的文件,您的文件不是 URL 编码的,请使用:

curl --data-urlencode @file http://example.com

如果您的文件包含以下内容:

00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff

这将导致收到类似以下内容的 POST 请求:

POST / HTTP/1.1
User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
Host: example.com
Accept: */*
Content-Length: 90
Content-Type: application/x-www-form-urlencoded

00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A

如果要添加名称,可以使用多部分形式编码,例如:

curl -F MACS=@file http://example.com

curl -F MACS=<file http://example.com

【讨论】:

  • 请注意,如果你想在参数中发送一个 URL 编码的字符串,而不使用多部分形式编码,你应该使用curl --data-urlencode param@file http://example.com 另见superuser.com/questions/543762/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 2018-08-29
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
相关资源
最近更新 更多