Je souhaite utiliser wget pour télécharger une image sur un serveur distant, à l'aide d'un jeton d'authentification, "AUTH_1624582364932749DFHDD", dans le dossier "test".
Cette commande ne fonctionne pas (échec de l'autorisation) et je veux m'assurer qu'il ne s'agit pas de syntaxe:
wget --post-file=nature.jpg http://ipadress:8080/v1/AUTH_test/test/ --post-data="AUTH_1624582364932749DFHDD"
Aucune suggestion?
Wget ne prend actuellement en charge que les données x-www-form-urlencoded. --post-file
ne permet pas de transmettre des fichiers en tant que pièces jointes à un formulaire. Il attend des données sous la forme: key=value&otherkey=example
.
--post-data
et --post-file
fonctionnent de la même manière: la seule différence est que --post-data
vous permet de spécifier les données dans la ligne de commande, tandis que --post-file
vous permet de spécifier le chemin de le 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 dans l’en-tête, dans le chemin de l’url ou dans les données elles-mêmes. Cela doit être indiqué quelque part dans la documentation du service que vous utilisez. Dans une demande POST, comme dans une demande GET, vous devez spécifier les données à l'aide de clés et de valeurs. De cette façon, le serveur pourra recevoir plusieurs informations avec des noms spécifiques. C'est similaire avec les variables.
Par conséquent, vous ne pouvez pas simplement envoyer un jeton magique au serveur, vous devez également spécifier le nom de la clé. Si la clé est "jeton", alors il devrait s'agir de token=YOUR_TOKEN
.
wget --post-data 'user=foo&password=bar' http://example.com/auth.php
En outre, vous devriez envisager d’utiliser curl si vous le pouvez car il est plus facile d’envoyer des fichiers en l’utilisant. Il existe de nombreux exemples sur Internet pour cela.