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-binarykullanı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ı curlile --formparametreler:
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.