Jak mogę wysłać / opublikować plik XML na serwerze lokalnym http: // localhost: 8080 przy użyciu curl z wiersza poleceń?
Jakiego polecenia powinienem użyć?
źródło
Jak mogę wysłać / opublikować plik XML na serwerze lokalnym http: // localhost: 8080 przy użyciu curl z wiersza poleceń?
Jakiego polecenia powinienem użyć?
Jeśli to pytanie jest powiązane z innymi pytaniami Hudsona, użyj polecenia, które podają. W ten sposób za pomocą XML z wiersza poleceń:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Musisz to trochę zmienić, aby odczytać z pliku:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Przeczytaj stronę podręcznika . zgodnie ze streszczeniem parametru -d.
-d / - dane
(HTTP) Wysyła określone dane w żądaniu POST do serwera HTTP, w taki sam sposób, jak przeglądarka, gdy użytkownik wypełni formularz HTML i naciska przycisk wysyłania. Spowoduje to, że curl przekaże dane do serwera za pomocą aplikacji typu treści / x-www-form-urlencoded. Porównaj z formularzem -F / -.
-d / - data jest taka sama jak --data-ascii. Aby opublikować dane czysto binarne, należy zamiast tego użyć opcji --data-binary. Aby zakodować URL wartości pola formularza, możesz użyć --data-urlencode.
Jeśli którakolwiek z tych opcji zostanie użyta więcej niż jeden raz w tym samym wierszu poleceń, określone elementy danych zostaną scalone razem z separatorem i symbolem. Tak więc użycie „-d name = daniel -d skill = lousy” wygeneruje fragment postu, który wygląda jak „name = daniel & skill = lousy”.
Jeśli zaczynasz dane literą @, reszta powinna być nazwą pliku, z którego można odczytać dane, lub - jeśli chcesz, aby curl odczytał dane ze standardowego wejścia. Zawartość pliku musi być już zakodowana w adresie URL. Można również podać wiele plików. Wysyłanie danych z pliku o nazwie „foobar” byłoby zatem wykonywane przy pomocy --data @foobar.
The contents of the file must already be URL-encoded.
Pliki XML OP na pewno nie są.--header "Content-Type:application/xml"
który nie ma być kodowany w adresie URL-L
, nie używaj,-X POST
ponieważ spowoduje to, że przekierowane żądanie będzie używać POST. Jeśli użyjesz -d jak sugeruje @Tai, tak się nie stanie-d
usuwa podziały linii z plików. Aby tego uniknąć, użyj--data-binary
zamiast tego.Z strony podręcznika uważam, że są to droidy, których szukasz:
W twoim przypadku byłoby to coś takiego
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
źródło
file=@-
jest przydatny, jeśli chcesz przesłać swój plik do potoku.Możesz użyć opcji --data z plikiem.
Zapisz zawartość xml do pliku o nazwie soap_get.xml i za pomocą polecenia curl wyślij żądanie:
źródło
Z Jenkins 1.494, udało mi się wysłać plik do parametru pracy na Ubuntu 12.10 przy użyciu
curl
z--form
parametrami:Na serwerze Jenkins skonfigurowałem zadanie, które akceptuje jeden parametr: parametr wysyłania pliku o nazwie
myfileparam
.Pierwszy wiersz tego wywołania curl tworzy formularz internetowy z parametrem o nazwie
myfileparam
(takim samym jak w zadaniu); jego wartością będzie zawartość pliku w lokalnym systemie plików o nazwie/local/path/to/your/file.txt
.@
Symbol przedrostka mówi curl wysłać plik lokalny zamiast podanej nazwie.Drugi wiersz definiuje żądanie JSON pasujące do parametrów formularza w wierszu pierwszym: parametr pliku o nazwie
myfileparam
.Trzeci wiersz aktywuje przycisk kompilacji formularza. Czwarty wiersz to adres URL zadania z przyrostkiem „/ build”.
Jeśli to połączenie się powiedzie, curl powraca
0
. Jeśli się nie powiedzie, błąd lub wyjątek z usługi zostanie wydrukowany na konsoli. Ta odpowiedź wiele bierze ze starego posta na blogu dotyczącego Hudsona , który zdekonstruowałem i przerobiłem na własne potrzeby.źródło
Oto, w jaki sposób możesz POST XML w systemie Windows za pomocą wiersza polecenia curl w systemie Windows. Lepiej użyj do tego pliku wsadowego / .cmd:
źródło
Jeśli masz wiele nagłówków, możesz użyć następujących opcji:
źródło
Możesz użyć tego polecenia:
źródło
Jeśli używasz curl w systemie Windows:
źródło