Comment puis-je faire un HTTP PUT avec Wget?

37

J'essaie d'utiliser Wget pour accéder à une interface RESTful , mais je n'arrive pas à comprendre comment faire HTTP PUT avec Wget. Comment puis-je le faire? Ou n'est-ce pas possible?

Jonas
la source

Réponses:

23

Wget ne peut pas faire PUT. Utilisez cURL à la place, avec -T.

Ignacio Vazquez-Abrams
la source
il y a aussi un utilitaire wput qui semble limité au FTP.
Quack Quackote
10
Wget peut maintenant faire PUT en utilisant --method.
John Henry
52
wget --method=PUT --body-data=<STRING>

C'est un peu tard, mais après la publication originale, ils ont ajouté l'option "--method". Je ne sais pas quand cela a été ajouté, mais voir https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684189#24 pour plus de détails.

John Henry
la source
5
Cela devrait être accepté réponse.
Vanuan
3
Devrait être accepté réponse en 2014, 2016 ou à tout moment. - La méthode param n'était pas disponible dans wget en 2010 :(
Bernhard Döbler
4
Not in
Dmitry Minkovsky
Semble ne pas fonctionner lors de l'utilisation avec authentification. J'ai essayé wget --method=PUTavec l'authentification Digest Access mais wget n'effectue pas la procédure d'authentification comme avec une requête GET standard.
Joe
--Méthode toujours non disponible dans centos 7.
David V.
21

Puisqu'il s'agit d'une interface REST , je pense que vous voudriez utiliser curlavec -X PUT, comme ceci:

curl -i -X PUT http://www.example.tld/rest/updateEntity/1234?active=false

Ou si vous avez besoin de "publier" des données à partir d'un fichier, comme un fichier XML:

curl -i -X PUT -H "Content-Type: application/xml; charset=utf-8" -d @"/tmp/some-file.xml" http://www.example.tld/rest/updateEntity
Sverre Marvik
la source
6

Pour moi, les suivants ont fonctionné:

curl -T <file-path> <url>

Pour une raison quelconque, quand je l'ai suivi, rien ne s'est passé (pas d'erreur non plus):

curl -X PUT -d <file-path> <url>         (did not work)
hznut
la source
1
-denverra les données que vous avez entrées sur la ligne de commande, il essaiera donc de PUT le chemin du fichier sous forme de texte.
che
4

Si vous ne souhaitez pas utiliser un fichier en tant que données, vous pouvez procéder comme suit.

curl -X PUT -d "something=blabla&somethingelse=blaha" http://www.example.com
Fredrik
la source