Antworten:
Mit Feldern:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
Mit individuell festgelegten Feldern:
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi
Multipart:
curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi
Multipart mit Feldern und einem Dateinamen:
curl --form "fileupload=@my-file.txt;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
Weitere Informationen finden Sie im cURL-Handbuch . Das cURL-Tutorial zum Emulieren eines Webbrowsers ist hilfreich.
Verwenden curl_formadd()
Sie in libcurl die Funktion, um Ihr Formular zu erstellen, bevor Sie es auf die übliche Weise senden . Weitere Informationen finden Sie in der libcurl-Dokumentation .
Erwägen Sie bei großen Dateien das Hinzufügen von Parametern, um den Upload-Fortschritt anzuzeigen:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
Das -o output
ist erforderlich, sonst erscheint kein Fortschrittsbalken.
--data-urlencode
(kein Strich), zumindest in den letzten Versionen
With Fields
, wann mit Multipart
und wann Without Data
?
--data
Ihnen können verwenden -d
.
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 genannten Datei gelesen filename.txt
und als Postanforderung gesendet.
curl -X POST
impliziert eine HTTP-POST-Anforderung, der -d
Parameter (lange Version :) --data
teilt curl mit, dass es sich bei den folgenden Parametern um POST-Parameter handelt, und @filename
legt den Inhalt der Datei filename
als Parameter fest. Dieser Ansatz funktioniert am besten mit RESTful-HTTP-APIs wie Twitter, Facebook, verschiedenen anderen Webdiensten wie Ruby on Rails sowie HTTP-APIs von Datenbanken wie CouchDB. REST steht für Representational State Transfer
-X POST
da dies impliziert wird -d
.
Daten von stdin mit -d @-
Beispiel:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Ausgabe:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
ist das Beispiel im Curl Example Manual .
Verwenden Sie% 26 für das kaufmännische Und, wenn das oben Genannte nicht funktioniert:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
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/
Bei der ersten Anforderung wird das Sitzungscookie (das bei erfolgreicher Anmeldung bereitgestellt wird) in der Datei "Header" gespeichert. Von nun an können Sie mit diesem Cookie jeden Teil der Website authentifizieren, auf den Sie normalerweise zugreifen, nachdem Sie sich mit einem Browser angemeldet haben.
curl -v --data-ascii var=value http://example.com
Weitere Optionen finden Sie unter curl --help
Weitere Informationen.
Wenn Sie faul sind, können Sie Google-Chrome nutzen, um die ganze Arbeit für Sie zu erledigen.
Chrome kopiert alle Anforderungsdaten in cURL-Syntax.
Chrome verwendet Funktionen, --data 'param1=hello¶m2=world'
die Sie mithilfe eines einzelnen -d
oder -F
pro Parameter lesbarer machen können, je nachdem, welche Art von POST-Anforderung Sie senden möchten. Diese kann entweder application/x-www-form-urlencoded
oder multipart/form-data
entsprechend sein.
Dies wird veröffentlicht 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 eine multipart/form-data
POST-Verwendung -F
( normalerweise bei Formularen verwendet, die Datei-Uploads 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 User-Agent
Header wird normalerweise nicht benötigt, aber ich habe ihn für alle Fälle reingeworfen. Sie können vermeiden, den Benutzeragenten bei jeder Anforderung einstellen zu müssen, indem Sie die ~/.curlrc
Datei erstellen, die zUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data