2008-09-17 15:39:01 +0000 2008-09-17 15:39:01 +0000
2240
2240

Was ist die cURL-Befehlszeilensyntax für eine POST-Abfrage?

Wie kann ich eine POST -Abfrage mit dem cURL -Befehlszeilentool durchführen?

Antworten (7)

2607
2607
2607
2008-09-17 15:43:28 +0000

Mit Feldern:

curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi

Mit einzeln angegebenen Feldern:

curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi

Multipart:

Multipart mit Feldern und einem Dateinamen:

curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi

Ohne Daten:

Weitere Informationen finden Sie im cURL-Handbuch . Das cURL-Handbuch zur Emulation eines Web-Browsers ist hilfreich.

Mit libcurl verwenden Sie die Funktion curl_formadd(), um Ihr Formular zu erstellen, bevor Sie es auf dem üblichen Weg abschicken. Weitere Informationen finden Sie in der libcurl-Dokumentation .

Bei großen Dateien sollten Sie das Hinzufügen von Parametern zur Anzeige des Upload-Fortschritts in Erwägung ziehen:

curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi

Die Funktion -o output ist erforderlich, andernfalls wird kein Fortschrittsbalken angezeigt.

517
517
517
2011-03-10 08:29:31 +0000

Für einen RESTful HTTP POST mit XML:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"

oder für JSON verwenden Sie dies:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"

Dies liest den Inhalt der Datei mit dem Namen filename.txt und sendet ihn als Post-Anforderung.

137
137
137
2014-03-25 19:35:44 +0000

Daten aus stdin mit -d @-

Beispiel:

echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown

Ausgabe:

<p>Hello <strong>world</strong>!</p>
69
69
69
2008-09-17 15:42:15 +0000
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi

ist das Beispiel aus dem Curl Example Manual .

Verwenden Sie %26 für das kaufmännische Und, wenn das obige nicht funktioniert:

curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
63
63
63
2012-03-04 02:21:37 +0000

Wenn Sie sich bei einer Website anmelden möchten, gehen Sie wie folgt vor:

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

Die erste Anfrage speichert das Session-Cookie (das bei erfolgreicher Anmeldung bereitgestellt wird) in der “Header”-Datei. Von nun an können Sie dieses Cookie verwenden, um sich für jeden Teil der Website zu authentifizieren, auf den Sie normalerweise nach dem Einloggen mit einem Browser zugreifen.

35
35
35
2008-09-17 15:43:02 +0000
curl -v --data-ascii var=value http://example.com

und es gibt noch viele weitere Optionen, siehe curl --help für weitere Informationen.

33
33
33
2017-09-29 08:06:57 +0000

Wenn Sie faul sind, können Sie google-chrome oder firefox die ganze Arbeit für Sie erledigen lassen.

  1. Klicken Sie mit der rechten Maustaste auf das Formular, das Sie abschicken möchten, und wählen Sie Inspect (oder Inspect Element für Firefox). Dadurch wird das DevTools-Panel geöffnet.
  2. Wählen Sie die Registerkarte Netzwerk in Devtools und markieren Sie das Kontrollkästchen Protokoll erhalten ( Persist Logs für Firefox).
  3. Reichen Sie das Formular ein und suchen Sie den Eintrag mit der Methode POST (klicken Sie mit der rechten Maustaste auf eine beliebige Spaltenüberschrift und stellen Sie sicher, daß Methode angekreuzt ist).
  4. Klicken Sie mit der rechten Maustaste auf die Zeile mit POST, und wählen Sie Copy > Copy as cURL.

Chrome kopiert alle Anforderungsdaten in der cURL-Syntax.

Chrome verwendet --data 'param1=hello&param2=world', die Sie lesbarer machen können, indem Sie eine einzelne -d oder -F pro Parameter verwenden, je nachdem, welche Art von POST-Anforderung Sie senden möchten, die entsprechend entweder application/x-www-form-urlencoded oder multipart/form-data sein kann.

Dies wird POST-ed als application/x-www-form-urlencoded (verwendet für die Mehrheit der Formulare, die keine Datei-Uploads enthalten):

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -d param1=hello \
    -d name=dinsdale

Für eine multipart/form-data POST verwenden Sie -F (typisch verwendet bei Formularen, die Datei-Uploads enthalten, oder wo die Reihenfolge der Felder wichtig ist, oder wo mehrere Felder mit dem gleichen Namen erforderlich sind):

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -F param1=hello \
    -F name=dinsdale \
    -F name=piranha

Die Kopfzeile User-Agent wird normalerweise nicht benötigt, aber ich habe sie nur für den Fall eingeworfen. Wenn Sie einen benutzerdefinierten Agenten benötigen, können Sie vermeiden, ihn bei jeder Anfrage setzen zu müssen, indem Sie die Datei ~/.curlrc erstellen, die z.B. User-Agent: "Mozilla/2.2"