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 POSTda es zu Anfrage Verwendung POST umgeleitet machen. Wenn Sie nur -d verwenden, wie @Tai vorschlägt, wird dies nicht passieren
-dZeilenumbrüche von Dateien entfernt werden. Um dies zu vermeiden, verwenden Sie --data-binarystattdessen.
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 curlmit --formParameter:
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.