Wie kann ich eine XML-Datei mit curl über die Befehlszeile an einen lokalen Server senden / senden http: // localhost: 8080 ?
Welchen Befehl soll ich verwenden?
quelle
Wie kann ich eine XML-Datei mit curl über die Befehlszeile an einen lokalen Server senden / senden http: // localhost: 8080 ?
Welchen Befehl soll ich verwenden?
Wenn diese Frage mit Ihren anderen Hudson-Fragen verbunden ist, verwenden Sie den von ihnen bereitgestellten Befehl. Auf diese Weise mit XML über die Befehlszeile:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Sie müssen es ein wenig ändern, um aus einer Datei zu lesen:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Lesen Sie die Manpage . nach einer Zusammenfassung für -d Parameter.
-d / - Daten
(HTTP) Sendet die angegebenen Daten in einer POST-Anforderung an den HTTP-Server auf dieselbe Weise wie ein Browser, wenn ein Benutzer ein HTML-Formular ausgefüllt und die Senden-Schaltfläche gedrückt hat. Dies führt dazu, dass Curl die Daten mit der Inhaltstyp-Anwendung / x-www-form-urlencoded an den Server weiterleitet. Vergleiche mit -F / - Form.
-d / - Daten sind die gleichen wie --data-ascii. Um Daten rein binär zu veröffentlichen, sollten Sie stattdessen die Option --data-binary verwenden. Um den Wert eines Formularfelds per URL zu codieren, können Sie --data-urlencode verwenden.
Wenn eine dieser Optionen mehrmals in derselben Befehlszeile verwendet wird, werden die angegebenen Datenelemente mit einem trennenden & -Symbol zusammengeführt. Die Verwendung von '-d Name = Daniel -d Skill = Lousy' würde also einen Post-Chunk erzeugen, der wie 'Name = Daniel & Skill = Lousy' aussieht.
Wenn Sie die Daten mit dem Buchstaben @ beginnen, sollte der Rest ein Dateiname sein, aus dem die Daten gelesen werden sollen, oder - wenn Sie möchten, dass Curl die Daten aus stdin liest. Der Inhalt der Datei muss bereits URL-codiert sein. Es können auch mehrere Dateien angegeben werden. Das Posten von Daten aus einer Datei mit dem Namen "foobar" würde daher mit --data @foobar erfolgen.
The contents of the file must already be URL-encoded.
OPs XML-Dateien sind es sicherlich nicht.--header "Content-Type:application/xml"
, wird keine URL-Codierung-L
, kann nicht verwendet werden,-X POST
da es zu Anfrage Verwendung POST umgeleitet machen. Wenn Sie nur -d verwenden, wie @Tai vorschlägt, wird dies nicht passieren-d
Zeilenumbrüche von Dateien entfernt werden. Um dies zu vermeiden, verwenden Sie--data-binary
stattdessen.Auf der Manpage glaube ich, dass dies die Droiden sind, nach denen Sie suchen:
In Ihrem Fall wäre dies also so etwas wie
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
quelle
file=@-
ist hilfreich, wenn Sie Ihre Datei einleiten möchten.Sie können die Option --data mit Datei verwenden.
Schreiben Sie XML-Inhalte in eine Datei mit dem Namen soap_get.xml und senden Sie die Anforderung mit dem Befehl curl:
quelle
Mit Jenkins 1.494, konnte ich eine Datei in einen Job - Parameter auf Ubuntu Linux 12.10 mit senden
curl
mit--form
Parameter:Auf dem Jenkins-Server habe ich einen Job konfiguriert, der einen einzelnen Parameter akzeptiert: einen Parameter zum Hochladen von Dateien mit dem Namen
myfileparam
.Die erste Zeile dieses Curl-Aufrufs erstellt ein Webformular mit einem Parameter namens
myfileparam
(wie im Job). Sein Wert ist der Inhalt einer Datei im genannten lokalen Dateisystem/local/path/to/your/file.txt
. Das@
Symbolpräfix weist curl an, anstelle des angegebenen Dateinamens eine lokale Datei zu senden.Die zweite Zeile definiert eine JSON-Anforderung, die mit den Formularparametern in Zeile 1 übereinstimmt: einen Dateiparameter mit dem Namen
myfileparam
.Die dritte Zeile aktiviert die Schaltfläche Erstellen des Formulars. Die vierte Zeile ist die Job-URL mit dem Suffix "/ build".
Wenn dieser Aufruf erfolgreich ist, kehrt curl zurück
0
. Wenn dies nicht erfolgreich ist, wird der Fehler oder die Ausnahme vom Dienst auf der Konsole gedruckt. Diese Antwort stammt aus einem alten Blog-Beitrag über Hudson , den ich dekonstruiert und für meine eigenen Bedürfnisse überarbeitet habe.quelle
So können Sie XML unter Windows mithilfe der Curl-Befehlszeile unter Windows POSTEN. Verwenden Sie dazu besser die Batch- / CMD-Datei:
quelle
Wenn Sie mehrere Header haben, möchten Sie möglicherweise Folgendes verwenden:
quelle
Sie können diesen Befehl verwenden:
quelle
Wenn Sie Curl unter Windows verwenden:
quelle