Wget ne prend actuellement pas en charge les données "multipart/form-data". --post-file
ne permet pas de transmettre des fichiers en tant que pièces jointes à un formulaire, il attend des données avec le formulaire : key=value&otherkey=example
. Il est en fait possible de poster d'autres formats (json) si vous envoyez l'en-tête correspondant.
--post-data
y --post-file
fonctionnent de la même manière : la seule différence est que les --post-data
vous permet de spécifier les données dans la ligne de commande, tandis que --post-file
permet de spécifier le chemin d'accès au fichier contenant les données à envoyer.
Voici la documentation :
--post-data=string
--post-file=file
Use POST as the method for all HTTP requests and send the specified data
in the request body. --post-data sends string as data, whereas
--post-file sends the contents of file. Other than that, they work in
exactly the same way. In particular, they both expect content of the
form "key1=value1&key2=value2", with percent-encoding for special
characters; the only difference is that one expects its content as a
command-line parameter and the other accepts its content from a file. In
particular, --post-file is not for transmitting files as form
attachments: those must appear as "key=value" data (with appropriate
percent-coding) just like everything else. Wget does not currently
support "multipart/form-data" for transmitting POST data; only
"application/x-www-form-urlencoded". Only one of --post-data and
--post-file should be specified.
En ce qui concerne votre jeton d'authentification, il doit être fourni soit dans l'en-tête, soit dans le chemin de l'url, soit dans les données elles-mêmes. Cela doit être indiqué quelque part dans la documentation du service que vous utilisez. Dans une requête POST, comme dans une requête GET, vous devez spécifier les données à l'aide de clés et de valeurs. De cette manière, le serveur pourra recevoir plusieurs informations avec des noms spécifiques. C'est la même chose avec les variables.
Par conséquent, vous ne pouvez pas vous contenter d'envoyer un jeton magique au serveur, vous devez également spécifier le nom de la clé. Si la clé est "token", alors elle doit être token=YOUR_TOKEN
.
wget --post-data 'user=foo&password=bar' http://example.com/auth.php
De plus, vous devriez envisager d'utiliser curl si vous le pouvez, car il est plus facile d'envoyer des fichiers. Il existe de nombreux exemples sur l'internet à ce sujet.