如何使用 Wget 执行 HTTP PUT?

Jon*_*nas 44 linux wget command-line http

我正在尝试使用Wget访问RESTful接口,但我不知道如何使用 Wget 执行 HTTP PUT。我该怎么做?还是不可能?

Joh*_*nry 72

wget --method=PUT --body-data=<STRING>
Run Code Online (Sandbox Code Playgroud)

这有点晚了,但在原始帖子之后的某个时候,他们添加了一个“--method”选项。我不确定它是何时添加的,但请参阅https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684189#24了解详细信息。

  • 不在忙碌的盒子里 (7认同)
  • 这应该被接受的答案。 (5认同)
  • 应该在 2014 年、2016 年或任何时候接受答案。--method 参数在 2010 年的 wget 中没有用:( (3认同)
  • 请注意仅使用 GNU wget,而不是 busybox wget。 (3认同)
  • --方法在centos 7中仍然不可用。 (2认同)
  • 如果你的正文是一个文件,也可以执行 `wget --method=PUT --body-file=&lt;FILENAME&gt;` 。 (2认同)

Ign*_*ams 23

Wget 不能做 PUT。改用cURL,带有-T.

  • Wget 现在可以使用 --method 执行 PUT。 (15认同)

小智 21

由于这是REST接口,我认为您想使用curlwith -X PUT,如下所示:

curl -i -X PUT http://www.example.tld/rest/updateEntity/1234?active=false
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要从文件(如 XML)“发布”数据:

curl -i -X PUT -H "Content-Type: application/xml; charset=utf-8" -d @"/tmp/some-file.xml" http://www.example.tld/rest/updateEntity
Run Code Online (Sandbox Code Playgroud)


小智 6

对我来说,以下工作:

curl -T <file-path> <url>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我遵循它时什么也没发生(也没有错误):

curl -X PUT -d <file-path> <url>         (did not work)
Run Code Online (Sandbox Code Playgroud)

  • `-d` 将发送您在命令行中输入的数据,因此它会尝试将文件路径作为文本。 (2认同)