wyślij/Opublikuj plik xml za pomocą wiersza poleceń curl
Jak mogę wysłać / opublikować plik xml na lokalny serwer http://localhost:8080 używanie curl z linii poleceń?
Jakiego polecenia powinienem użyć?
9 answers
Jeśli to pytanie jest połączone z innymi pytaniami Hudsona, użyj komendy, którą dostarczają. W ten sposób z XML z linii poleceń:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Musisz go trochę zmienić, aby odczytać z pliku:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Przeczytaj stronę podręcznika . po streszczeniu dla parametru-d.
- D / --data
(HTTP) wysyła określone dane w Wyślij żądanie na serwer HTTP, w tak samo jak przeglądarka, gdy użytkownik wypełnił formularz HTML oraz naciska przycisk Prześlij. To będzie powoduje, że curl przekazuje dane do serwer korzystający z typu content-type application / x-www-form-urlencoded. Porównaj z-F / --form.
- D / --data jest tym samym co --data-ascii. Aby publikować dane czysto binarne, należy zamiast tego użyj opcji --data-binary. Aby zakodować wartość formularza pole można użyć --data-urlencode.
Jeśli którakolwiek z tych opcji jest używana bardziej niż raz w tym samym wierszu poleceń, określone elementy danych będzie połączone razem z oddzielającym & - symbol. Tak więc, używając ' - D name=daniel - d skill=parszywy ' wygenerowałby kawałek posta, który wygląda jak 'name = daniel&skill=kiepski'.
Jeśli zaczniesz dane od litery @ , reszta powinna być nazwą pliku do odczytać dane z, lub-jeśli chcesz curl do odczytu danych ze standardowego wejścia. Na zawartość pliku musi być już Kodowany URL. Wiele plików może również być określone. Wysyłanie danych z pliku nazwany 'foobar' byłby więc zrobione z -- dane @foobar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-04 17:51:23
Ze strony Man wierzę, że to są droidy, których szukasz:
Więc w Twoim przypadku byłoby to coś w rodzaju
-F/--form <name=content>
(HTTP) to pozwala curl emulować wypełniony formularz, w którym użytkownik nacisnął przycisk submit. Powoduje to, że curl wysyła dane za pomocą multipart/form-data typu Content zgodnie z RFC2388. Umożliwia to wgrywanie plików binarnych itp. Aby wymusić, że część "content" jest plikiem, przedrostek nazwy pliku oznacza znak@.
Przykład, aby wysłać plik hasła do serwer, gdzie 'password' jest nazwą pola formularza, do którego/etc / passwd będzie wejściem:
curl -F password=@/etc/passwd www.mypasswords.com
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-09 15:48:44
Możesz użyć opcji --data z plikiem.
Zapis zawartości xml do pliku o nazwie soap_get.xml i użycie polecenia curl do wysłania żądania:
Curl-x POST --header "Content-Type: text / xml; charset=UTF-8" --data @soap_get.XML your_url
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-29 06:34:00
Z Jenkins 1.494, udało mi się wysłać plik do parametru zadania na Ubuntu Linux 12.10 używając curl
z parametrami --form
:
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
Na serwerze Jenkins skonfigurowałem zadanie, które akceptuje pojedynczy parametr: parametr przesyłania pliku o nazwie myfileparam
.
Pierwsza linia 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
. Przedrostek symbolu @
mówi curl do Wyślij plik lokalny zamiast podanej nazwy pliku.
Druga linia definiuje żądanie JSON, które odpowiada parametrom formularza w pierwszej linii: parametr pliku o nazwie myfileparam
.
Trzecia linia aktywuje przycisk budowania formularza. Czwarta linia To Adres URL zadania z przyrostkiem "/ build".
Jeśli to wywołanie się powiedzie, curl zwraca 0
. Jeśli nie powiedzie się, błąd lub wyjątek z usługi zostanie wydrukowany na konsoli. Ta odpowiedź bierze wiele z starego posta na blogu odnoszące się do Hudsona , który zdekonstruowałem i przerobiłem na własne potrzeby.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-12 21:58:01
Oto jak możesz publikować XML w systemie Windows za pomocą wiersza poleceń curl w systemie Windows. Lepiej używać batch/.plik cmd do tego:
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^>[email protected]^</Client_Email^> ^
^<Client_IP^>123.4.56.7^</Client_IP^> ^
^<Tax1Amount^>^</Tax1Amount^> ^
^<Tax2Amount^>^</Tax2Amount^> ^
^</Transaction^> ^
" "http://localhost:8080"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-20 16:16:42
Możesz użyć tego polecenia:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-31 09:47:49
Jeśli masz wiele nagłówków, możesz użyć następującego polecenia:
curl -X POST --header "Content-Type:application/json" --header "X-Auth:AuthKey" --data @hello.json Your_url
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-02 15:54:47
Jeśli używasz curl w systemie 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-08 13:07:56
Powershell + Curl + Zimbra SOAP API
${my_xml} = @"
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">
<soapenv:Body>
<GetFolderRequest xmlns=\"urn:zimbraMail\">
<folder>
<path>Folder Name</path>
</folder>
</GetFolderRequest>
</soapenv:Body>
</soapenv:Envelope>
"@
${my_curl} = "c:\curl.exe"
${cookie} = "c:\cookie.txt"
${zimbra_soap_url} = "https://zimbra:7071/service/admin/soap"
${curl_getfolder_args} = "-b", "${cookie}",
"--header", "Content-Type: text/xml;charset=UTF-8",
"--silent",
"--data-raw", "${my_xml}",
"--url", "${zimbra_soap_url}"
[xml]${my_response} = & ${my_curl} ${curl_getfolder_args}
${my_response}.Envelope.Body.GetFolderResponse.folder.id
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-08 18:05:19