Komut satırından curl kullanarak http: // localhost: 8080 yerel sunucuya xml dosyasını nasıl gönderebilir / gönderebilirim ?
Hangi komutu kullanmalıyım?
Komut satırından curl kullanarak http: // localhost: 8080 yerel sunucuya xml dosyasını nasıl gönderebilir / gönderebilirim ?
Hangi komutu kullanmalıyım?
Yanıtlar:
Bu soru diğer Hudson sorularınıza bağlıysa, sağladıkları komutu kullanın. Bu şekilde, komut satırından XML ile:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Bir dosyadan okumak için biraz değiştirmeniz gerekir:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Oku manpage . -d parametresinin özetini takiben.
-d / - Veri
(HTTP) POST isteğinde belirtilen verileri, bir kullanıcı bir HTML formunu doldurduğunda ve gönder düğmesine bastığında olduğu gibi tarayıcının yaptığı gibi HTTP sunucusuna gönderir. Bu, curl'un / x-www-form-urlencoded içerik türü uygulamasını kullanarak verileri sunucuya geçirmesine neden olur. -F / - formuyla karşılaştırın.
-d / - verileri --data-ascii ile aynıdır. Verileri tamamen ikili olarak yayınlamak için bunun yerine --data-binary seçeneğini kullanmalısınız. Bir form alanının değerini URL olarak kodlamak için --data-urlencode kullanabilirsiniz.
Bu seçeneklerden herhangi biri aynı komut satırında birden çok kez kullanılırsa, belirtilen veri parçaları bir ayırıcı & -sembolu ile birleştirilir. Böylece, '-d name = daniel -d skill = berbat' kullanılması 'name = daniel & skill = berbat' gibi görünen bir yığın oluşturur.
Verileri @ harfiyle başlatırsanız, geri kalanı verileri okumak için bir dosya adı veya - curl'ın stdin'den veri okumasını istiyorsanız. Dosyanın içeriği zaten URL kodlamalı olmalıdır. Birden fazla dosya da belirtilebilir. 'Foobar' adlı bir dosyadan veri gönderme --data @foobar ile yapılır.
-L
, do not kullanmak -X POST
çok istek kullanım POST yönlendirildi yapmak gibi. @Tai'nin önerdiği gibi -d'yi kullanırsanız, bu gerçekleşmez
-d
şeritler dosyalarından satır kesmelerinin. Bunu önlemek için --data-binary
kullanın.
Gönderen man , ben bu Aradığınız Droidlerin olduğuna inanıyoruz:
-F/--form <name=content>
(HTTP) Bu, kullanıcının gönder düğmesine bastığı doldurulmuş bir formun kıvrılmasını sağlar. Bu, RFC2388'e göre Content-Type çok parçalı / form verilerini kullanarak POST verilerinde kıvrılmalara neden olur. Bu, ikili dosyaların vb. Yüklenmesini sağlar. 'İçerik' bölümünü dosya olmaya zorlamak için dosya adının başına @ işareti koyun.
Örneğin, şifre dosyanızı sunucuya göndermek için, burada 'şifre' / etc / passwd komutunun girileceği form alanının adıdır:
curl -F password=@/etc/passwd www.mypasswords.com
Yani sizin durumunuzda, bu şöyle bir şey olurdu
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
file=@-
Dosyanızı aktarmak istiyorsanız biçim yararlıdır.
--Data seçeneğini dosya ile birlikte kullanabilirsiniz.
Soap_get.xml adlı bir dosyaya xml içeriği yazın ve istek göndermek için curl komutunu kullanın:
curl -X POST --header "İçerik-Türü: metin / xml; karakter kümesi = UTF-8" - veriler @ soap_get.xml your_url
Jenkins 1,494, ben kullanarak Ubuntu Linux 12.10 tarihinde iş parametresine bir dosya göndermek başardı curl
ile --form
parametreler:
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
Jenkins sunucusunda, tek bir parametreyi kabul eden bir iş yapılandırdım: adlı bir dosya yükleme parametresi myfileparam
.
Bu curl çağrısının ilk satırı, myfileparam
(işteki ile aynı) adlı bir parametreye sahip bir web formu oluşturur ; değeri, yerel dosya sistemindeki bir dosyanın içeriği olacaktır /local/path/to/your/file.txt
. @
Sembol öneki yerine verilen dosya adının yerel bir dosya göndermek bukle söyler.
İkinci satır, birinci satırdaki form parametreleriyle eşleşen bir JSON isteği tanımlar: adlı bir dosya parametresi myfileparam
.
Üçüncü satır, formun Oluştur düğmesini etkinleştirir. Dördüncü satır, "/ build" sonekine sahip iş URL'sidir.
Bu çağrı başarılı olursa, kıvrılma geri döner 0
. Başarısız olursa, hizmetteki hata veya istisna konsola yazdırılır. Bu cevap, Hudson ile ilgili eski bir blog yayınından çok şey alıyor , bu da kendi ihtiyaçlarım için yapısöktüm ve yeniden çalıştım.
Windows'ta kıvrılma komut satırını kullanarak XML'i Windows'ta nasıl POST yapabilirsiniz? Bunun için batch / .cmd dosyasını kullanmanız daha iyi olur:
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"
Bu komutu kullanabilirsiniz:
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
Windows'ta curl kullanıyorsanız :
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.
OP'nin XML dosyaları kesinlikle değildir.