Was ist die cURL-Befehlszeilensyntax für eine POST-Anfrage?
7 answers
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:
curl --form "[email protected]" https://example.com/resource.cgi
Multipart mit Feldern und einem Dateinamen:
curl --form "[email protected];filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi
Ohne Daten:
curl --data '' https://example.com/resource.cgi
curl -X POST https://example.com/resource.cgi
curl --request POST https://example.com/resource.cgi
Für weitere Informationen siehe das cURL-Handbuch. Das cURL-Tutorial zum Emulieren eines Webbrowsers ist hilfreich.
Verwenden Sie mit libcurl die Funktioncurl_formadd()
, um Ihr Formular zu erstellen, bevor Sie es wie gewohnt senden. Siehe die libcurl Dokumentation für mehr Information.
Für große Dateien sollten Sie Parameter hinzufügen, um den Upload-Fortschritt anzuzeigen:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
Der -o output
ist erforderlich, sonst erscheint kein Fortschrittsbalken.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-12-02 11:40:58
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 verwenden Sie für JSON Folgendes:
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"
Dadurch wird der Inhalt der Datei mit dem Namen filename.txt
gelesen und als Post-Anforderung gesendet.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-11-04 20:08:19
Daten von stdin mit -d @-
Beispiel:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Ausgabe:
<p>Hello <strong>world</strong>!</p>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-01-27 11:15:55
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
Ist das Beispiel in der Curl Beispiel Handbuch.
Verwenden Sie %26 für das kaufmännische Zeichen, wenn das Obige nicht funktioniert:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-03-13 12:01:45
Wenn Sie sich bei einer Site 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 Anforderung speichert das Sitzungscookie (das bei erfolgreicher Anmeldung bereitgestellt wird) in der Datei "Header". Von nun an können Sie dieses Cookie verwenden, um Sie bei jedem Teil der Website zu authentifizieren, auf den Sie normalerweise zugreifen, nachdem Sie sich mit einem Browser angemeldet haben.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-03-04 02:21:37
Wenn du faul bist, kannst du Google-Chrome oder Firefox dazu bringen, die ganze Arbeit für dich zu erledigen.
- Klicken Sie mit der rechten Maustaste auf das Formular, das Sie senden möchten, und wählen Sie Inspect (oder Element prüfen für Firefox). Dadurch wird das DevTools-Bedienfeld geöffnet.
- Wählen Sie die Registerkarte Network in devtools und aktivieren Sie das Kontrollkästchen Preserve log (Protokolle beibehalten für Firefox).
- Senden Sie das Formular und suchen Sie den Eintrag mit der Methode POST (klicken Sie mit der rechten Maustaste auf eine beliebige Spaltenüberschrift und stellen Sie sicher, dass Method aktiviert ist.)
- Rechtsklick auf die Zeile mit POST, und wählen Sie Kopieren > Kopieren als cURL.
Chrome kopiert alle Anforderungsdaten in der cURL-Syntax.
Chrome verwendet --data 'param1=hello¶m2=world'
, die Sie mit einem einzigen -d
oder -F
pro Parameter besser lesbar machen können, je nachdem, welche Art von POST-Anforderung Sie senden möchten, die entweder application/x-www-form-urlencoded
oder multipart/form-data
dementsprechend.
Dies wird POST-ed sein als application/x-www-form-urlencoded
(wird für die meisten Formulare verwendet, die keine Datei-Uploads enthalten):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
Für einen multipart/form-data
BEITRAG verwenden -F
(wird normalerweise bei Formularen verwendet, die Dateiuploads enthalten oder bei denen die Reihenfolge der Felder wichtig ist oder bei denen mehrere Felder mit demselben Namen erforderlich sind):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
Der Header User-Agent
wird normalerweise nicht benötigt, aber ich habe ihn nur für den Fall geworfen. Wenn Sie einen benutzerdefinierten Agenten benötigen, können Sie vermeiden so legen Sie es bei jeder Anforderung fest, indem Sie die ~/.curlrc
- Datei erstellen, die z. User-Agent: "Mozilla/2.2"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-07-22 10:15:03
curl -v --data-ascii var=value http://example.com
Und es gibt viele weitere Optionen, überprüfen Sie curl --help
für weitere Informationen.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-11-05 01:36:05