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:
@ tom-wijsman Erklärung: curl -X POSTimpliziert eine HTTP-POST-Anforderung, der -dParameter (lange Version :) --datateilt curl mit, dass es sich bei den folgenden Parametern um POST-Parameter handelt, und @filenamelegt den Inhalt der Datei filenameals 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
Soundmonster
1
Wie können wir Antwort-XML nicht in einer Zeile sehen, sondern formatiert?
Vitaly Zdanevich
6
Ich denke, dass Sie das weglassen können, -X POSTda dies impliziert wird -d.
Benjamin
Wie kann ich mehrere Überschriften vergeben?
Keya
Mehrere Header: locken -H "header2: 1" -H "header2: 2" ...
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.
Wenn Sie faul sind, können Sie Google-Chrome nutzen, um die ganze Arbeit für Sie zu erledigen.
Klicken Sie mit der rechten Maustaste auf das Formular, das Sie senden möchten, und wählen Sie Überprüfen aus . Dadurch wird das DevTools-Bedienfeld geöffnet.
Wählen Sie das Netzwerk - Registerkarte in devtools und kreuzen Sie das Protokoll beibehalten Checkbox.
Senden Sie das Formular ab und suchen Sie den Eintrag mit der Methode POST (klicken Sie mit der rechten Maustaste auf eine Spaltenüberschrift und vergewissern Sie sich, dass die Methode aktiviert ist).
Klicken Sie mit der rechten Maustaste auf die Zeile mit POST und wählen Sie Kopieren > Als CURL kopieren .
Chrome kopiert alle Anforderungsdaten in cURL-Syntax.
Chrome verwendet Funktionen, --data 'param1=hello¶m2=world'die Sie mithilfe eines einzelnen -doder -Fpro Parameter lesbarer machen können, je nachdem, welche Art von POST-Anforderung Sie senden möchten. Diese kann entweder application/x-www-form-urlencodedoder multipart/form-dataentsprechend sein.
Dies wird veröffentlicht als application/x-www-form-urlencoded( wird für die meisten Formulare verwendet, die keine Datei-Uploads enthalten ):
Für eine multipart/form-dataPOST-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 ):
Der User-AgentHeader 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 ~/.curlrcDatei erstellen, die zUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
Antworten:
Mit Feldern:
Mit individuell festgelegten Feldern:
Multipart:
Multipart mit Feldern und einem Dateinamen:
Ohne Daten:
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:
Das
-o output
ist erforderlich, sonst erscheint kein Fortschrittsbalken.quelle
--data-urlencode
(kein Strich), zumindest in den letzten VersionenWith Fields
, wann mitMultipart
und wannWithout Data
?--data
Ihnen können verwenden-d
.Für einen RESTful HTTP POST mit XML:
oder verwenden Sie für JSON Folgendes:
Dadurch wird der Inhalt der genannten Datei gelesen
filename.txt
und als Postanforderung gesendet.quelle
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 Dateifilename
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:
Ausgabe:
quelle
ist das Beispiel im Curl Example Manual .
Verwenden Sie% 26 für das kaufmännische Und, wenn das oben Genannte nicht funktioniert:
quelle
Wenn Sie sich bei einer Site anmelden möchten, gehen Sie wie folgt vor:
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.
quelle
Weitere Optionen finden Sie unter
curl --help
Weitere Informationen.quelle
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 entwederapplication/x-www-form-urlencoded
odermultipart/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 ):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 ):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"
quelle