Bagaimana saya bisa mengirim / memposting file xml ke server lokal http: // localhost: 8080 menggunakan curl dari baris perintah?
Perintah apa yang harus saya gunakan?
Bagaimana saya bisa mengirim / memposting file xml ke server lokal http: // localhost: 8080 menggunakan curl dari baris perintah?
Perintah apa yang harus saya gunakan?
Jawaban:
Jika pertanyaan itu terhubung ke pertanyaan Hudson Anda yang lain, gunakan perintah yang mereka berikan. Cara ini dengan XML dari baris perintah:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Anda perlu mengubahnya sedikit untuk membaca dari file:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Baca halaman manual . mengikuti abstrak untuk -d Parameter.
-d / - data
(HTTP) Mengirim data yang ditentukan dalam permintaan POST ke server HTTP, dengan cara yang sama seperti browser ketika pengguna telah mengisi formulir HTML dan menekan tombol kirim. Ini akan menyebabkan curl meneruskan data ke server menggunakan aplikasi tipe konten / x-www-form-urlencoded. Bandingkan dengan formulir -F / -.
-d / - data sama dengan --data-ascii. Untuk memposting data murni biner, Anda sebaiknya menggunakan opsi --data-binary. Untuk menyandikan URL nilai bidang formulir, Anda dapat menggunakan --data-urlencode.
Jika salah satu dari opsi ini digunakan lebih dari satu kali pada baris perintah yang sama, potongan data yang ditentukan akan digabungkan bersama dengan tanda & -simbol yang terpisah. Jadi, menggunakan '-d name = daniel -d skill = lousy' akan menghasilkan potongan postingan yang terlihat seperti 'name = daniel & skill = lousy'.
Jika Anda memulai data dengan huruf @, sisanya harus berupa nama file untuk membaca data dari, atau - jika Anda ingin ikal membaca data dari stdin. Isi file harus sudah disandikan URL. Beberapa file juga dapat ditentukan. Memposting data dari file bernama 'foobar' akan dilakukan dengan --data @foobar.
--header "Content-Type:application/xml"
Anda tidak diharapkan untuk menyandikan URL
-L
, jangan tidak menggunakan -X POST
karena akan membuat diarahkan permintaan penggunaan POST juga. Jika Anda hanya menggunakan -d seperti yang disarankan @Tai, ini tidak akan terjadi
-d
strip menghapus dari file. Untuk menghindari ini, gunakan --data-binary
saja.
Dari halaman manual , saya percaya ini adalah droid yang Anda cari:
-F/--form <name=content>
(HTTP) Ini memungkinkan ikal meniru bentuk yang diisi di mana pengguna telah menekan tombol kirim. Ini menyebabkan curl ke data POST menggunakan multipart / tipe-data Konten menurut RFC2388. Ini memungkinkan pengunggahan file biner dll. Untuk memaksa bagian 'konten' menjadi file, awali nama file dengan tanda @.
Contoh, untuk mengirim file kata sandi Anda ke server, di mana 'kata sandi' adalah nama bidang isian yang akan diinput oleh / etc / passwd:
curl -F password=@/etc/passwd www.mypasswords.com
Jadi dalam kasus Anda, ini akan menjadi sesuatu seperti
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
file=@-
sangat membantu jika Anda ingin mem -pipe file Anda.
Anda dapat menggunakan opsi --data with file.
Tulis konten xml ke file bernama soap_get.xml dan gunakan perintah curl untuk mengirim permintaan:
curl -X POST - header "Tipe Konten: teks / xml; charset = UTF-8" --data @ soap_get.xml your_url
Dengan Jenkins 1.494, saya dapat mengirim file ke parameter pekerjaan di Ubuntu Linux 12.10 menggunakan curl
dengan --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
Di server Jenkins, saya mengonfigurasikan pekerjaan yang menerima satu parameter: nama file yang diunggah myfileparam
.
Baris pertama dari panggilan ikal itu membangun formulir web dengan parameter bernama myfileparam
(sama seperti dalam pekerjaan); nilainya akan menjadi isi file pada sistem file lokal bernama /local/path/to/your/file.txt
. Itu@
simbol awalan memberitahu curl untuk mengirim file lokal bukan nama file yang diberikan.
Baris kedua mendefinisikan permintaan JSON yang cocok dengan parameter formulir di baris satu: parameter file bernama myfileparam
.
Baris ketiga mengaktifkan tombol Build form. Baris keempat adalah URL pekerjaan dengan akhiran "/ build".
Jika panggilan ini berhasil, ikal kembali 0
. Jika tidak berhasil, kesalahan atau pengecualian dari layanan dicetak ke konsol. Jawaban ini mengambil banyak dari posting blog lama yang berhubungan dengan Hudson , yang saya mendekonstruksi dan bekerja kembali untuk kebutuhan saya sendiri.
Inilah cara Anda dapat POST XML pada Windows menggunakan baris perintah curl pada Windows. Lebih baik gunakan file batch / .cmd untuk itu:
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"
Anda dapat menggunakan perintah ini:
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
Jika Anda menggunakan curl di Windows:
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.
File XML OP tentu saja tidak.