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?
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?
Antworten:
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.
--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:
-F/--form <name=content>
(HTTP) Hiermit kann Curl ein ausgefülltes Formular emulieren, in dem ein Benutzer die Senden-Schaltfläche gedrückt hat. Dies führt dazu, dass sich POST-Daten unter Verwendung der Multipart- / Formulardaten vom Inhaltstyp gemäß RFC2388 kräuseln. Dies ermöglicht das Hochladen von Binärdateien usw. Um zu erzwingen, dass der Inhaltsteil eine Datei ist, müssen Sie dem Dateinamen ein @ -Zeichen voranstellen.
Beispiel, um Ihre Kennwortdatei an den Server zu senden, wobei 'Kennwort' der Name des Formularfelds ist, in das / etc / passwd eingegeben wird:
curl -F password=@/etc/passwd www.mypasswords.com
In Ihrem Fall wäre dies also so etwas wie
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
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:
curl -X POST --header "Inhaltstyp: text / xml; Zeichensatz = UTF-8" --data @ soap_get.xml your_url
Mit Jenkins 1.494, konnte ich eine Datei in einen Job - Parameter auf Ubuntu Linux 12.10 mit senden curl
mit --form
Parameter:
curl --form name=myfileparam --form file=@/local/path/to/your/file.xml \
-Fjson='{"parameter": {"name": "myfileparam", "file": "file"}}' \
-Fsubmit=Build \
http://user:password@jenkinsserver/job/jobname/build
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.
So können Sie XML unter Windows mithilfe der Curl-Befehlszeile unter Windows POSTEN. Verwenden Sie dazu besser die Batch- / CMD-Datei:
curl -i -X POST -H "Content-Type: text/xml" -d ^
"^<?xml version=\"1.0\" encoding=\"UTF-8\" ?^> ^
^<Transaction^> ^
^<SomeParam1^>Some-Param-01^</SomeParam1^> ^
^<Password^>SomePassW0rd^</Password^> ^
^<Transaction_Type^>00^</Transaction_Type^> ^
^<CardHoldersName^>John Smith^</CardHoldersName^> ^
^<DollarAmount^>9.97^</DollarAmount^> ^
^<Card_Number^>4111111111111111^</Card_Number^> ^
^<Expiry_Date^>1118^</Expiry_Date^> ^
^<VerificationStr2^>123^</VerificationStr2^> ^
^<CVD_Presence_Ind^>1^</CVD_Presence_Ind^> ^
^<Reference_No^>Some Reference Text^</Reference_No^> ^
^<Client_Email^>john@smith.com^</Client_Email^> ^
^<Client_IP^>123.4.56.7^</Client_IP^> ^
^<Tax1Amount^>^</Tax1Amount^> ^
^<Tax2Amount^>^</Tax2Amount^> ^
^</Transaction^> ^
" "http://localhost:8080"
Wenn Sie mehrere Header haben, möchten Sie möglicherweise Folgendes verwenden:
curl -X POST --header "Content-Type:application/json" --header "X-Auth:AuthKey" --data @hello.json Your_url
Sie können diesen Befehl verwenden:
curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: <<Removed>>' -F file=@"/home/xxx/Desktop/customers.json" 'API_SERVER_URL' -k
Wenn Sie Curl unter Windows verwenden:
curl -H "Content-Type: application/xml" -d "<?xml version="""1.0""" encoding="""UTF-8""" standalone="""yes"""?><message><sender>Me</sender><content>Hello!</content></message>" http://localhost:8080/webapp/rest/hello
The contents of the file must already be URL-encoded.
OPs XML-Dateien sind es sicherlich nicht.