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ć?

Author: Philip Kirkbride, 2010-06-09

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.

 519
Author: Peter Schuetze,
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:

-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

Więc w Twoim przypadku byłoby to coś w rodzaju
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
 194
Author: Piskvor left the building,
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

 51
Author: NgaNguyenDuy,
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.

 21
Author: Steve HHH,
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"
 7
Author: Gleb Esman,
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 
 5
Author: Musleh Uddin,
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
 3
Author: Dheeraj R,
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
 1
Author: Paul Vargas,
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
 0
Author: alf-man,
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