it-swarm.com.de

Postanfrage mit Wget?

Ich möchte wget verwenden, um ein Bild mit dem Authentifizierungstoken "AUTH_1624582364932749DFHDD" in den Ordner "test" auf einen entfernten Server hochzuladen.

Dieser Befehl funktioniert nicht (Autorisierung fehlgeschlagen), und ich möchte sicherstellen, dass es nicht um Syntax geht:

wget --post-file=nature.jpg http://ipadress:8080/v1/AUTH_test/test/ --post-data="AUTH_1624582364932749DFHDD"

Irgendwelche Vorschläge?

54
Dady

Wget unterstützt derzeit nur x-www-form-urlencoded Daten. --post-file Dient nicht zum Übertragen von Dateien als Formularanhang, sondern erwartet Daten mit dem Formular: key=value&otherkey=example.

--post-data Und --post-file Funktionieren auf die gleiche Weise: Der einzige Unterschied besteht darin, dass Sie mit --post-data Die Daten in der Befehlszeile angeben können, während dies mit --post-file Möglich ist Geben Sie den Pfad der Datei an, die die zu sendenden Daten enthält.

Hier ist die Dokumentation:

 --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.

In Bezug auf Ihr Authentifizierungstoken sollte es entweder im Header, im Pfad der URL oder in den Daten selbst angegeben werden. Dies muss in der Dokumentation des von Ihnen verwendeten Dienstes angegeben werden. In einer POST -Anforderung müssen Sie wie in einer GET-Anforderung die Daten mithilfe von Schlüsseln und Werten angeben. Auf diese Weise kann der Server mehrere Informationen mit bestimmten Namen empfangen. Ähnliches gilt für Variablen.

Daher können Sie nicht nur ein magisches Token an den Server senden, sondern müssen auch den Namen des Schlüssels angeben. Wenn der Schlüssel "Token" ist, sollte er token=YOUR_TOKEN Sein.

wget --post-data 'user=foo&password=bar' http://example.com/auth.php

Sie sollten auch in Betracht ziehen, Curl zu verwenden, wenn dies möglich ist, da es einfacher ist, Dateien damit zu senden. Dafür gibt es im Internet viele Beispiele.

74
Maxime Chéramy