Как отправить/отправить файл xml на локальный сервер http://localhost:8080 с помощью curl из командной строки?
Какую команду следует использовать?
Как отправить/отправить файл xml на локальный сервер http://localhost:8080 с помощью curl из командной строки?
Какую команду следует использовать?
Если этот вопрос связан с вашими другими вопросами Hudson, используйте команду, которую они предоставляют. Этот способ с XML из командной строки:
$ curl -X POST -d '<run>...</run>' \
http://user:[email protected]:myport/path/of/url
Вам нужно немного изменить его, чтобы прочитать из файла:
$ curl -X POST -d @myfilename http://user:[email protected]:myport/path/of/url
Прочтите справочную страницу. после реферата для параметра -d.
-d / - -d ата
(HTTP) Отправляет указанные данные в POST-запросе на HTTP-сервер так же, как браузер, когда пользователь заполняет HTML-форму и нажимает кнопку отправки. Это приведет к тому, что curl передаст данные на сервер, используя application-type application/x-www -F orm-urlencoded. Сравните с -F / - -F норм.
-d / - -d ata - это то же самое, что и -d ata-ascii. Чтобы публиковать данные исключительно в двоичном виде, вы должны использовать опцию - -d ata-binary. Для URL-кодирования значения поля формы вы можете использовать - -d ata-urlencode.
Если какой-либо из этих параметров используется более одного раза в одной и той же командной строке, указанные фрагменты данных будут объединены вместе с разделителем & -symbol. Таким образом, использование '-d name = daniel -d skill = lousy' сгенерирует пост-чанк, который выглядит как 'name = daniel & skill = lousy'.
Если вы начинаете данные с буквы @, остальное должно быть именем файла для чтения данных, или - если вы хотите, чтобы curl считывал данные из stdin. Содержимое файла уже должно быть в кодировке URL. Несколько файлов также могут быть указаны. Публикация данных из файла с именем 'foobar', таким образом, будет выполняться с - -d ata @foobar.
Из manpage, я считаю, что это дроидов, которые вы ищете:
-F/--form <name=content>
(HTTP) Это позволяет скручивать эмулировать заполненную форму, в которой пользователь нажал кнопку отправки. Это вызывает завихрение данных POST с использованием данных типа multipart/form-data Content-Type в соответствии с RFC2388. Это позволяет загружать двоичные файлы и т.д. Чтобы заставить часть контента быть файлом, префикс имени файла знаком @.
Пример, чтобы отправить файл паролей на сервер, где "пароль" - это имя поля формы, в которое будет вводиться вход /etc/passwd:
curl -F [email protected]/etc/passwd www.mypasswords.com
Итак, в вашем случае это будет что-то вроде
curl -F [email protected]/some/file/on/your/local/disk http://localhost:8080
Вы можете использовать опцию --data с файлом.
Напишите содержимое xml в файл с именем soap_get.xml и с помощью команды curl для отправки запроса:
curl -X POST -header "Content-Type: text/xml; charset = UTF-8" --data @soap_get.xml your_url
С Jenkins 1.494 я смог отправить файл в параметр job на Ubuntu Linux 12.10, используя curl
с параметрами --form
:
curl --form name=myfileparam --form [email protected]/local/path/to/your/file.xml \
-Fjson='{"parameter": {"name": "myfileparam", "file": "file"}}' \
-Fsubmit=Build \
http://user:[email protected]/job/jobname/build
На сервере Jenkins я настроил задание, которое принимает один параметр: параметр загрузки файла с именем myfileparam
.
Первая строка этого вызова curl создает веб-форму с параметром с именем myfileparam
(то же, что и в задании); его значением будет содержимое файла в локальной файловой системе с именем /local/path/to/your/file.txt
. Префикс символа @
сообщает curl для отправки локального файла вместо указанного имени файла.
Вторая строка определяет запрос JSON, который соответствует параметрам формы в первой строке: параметр файла с именем myfileparam
.
Третья строка активирует кнопку "Создать форму". Четвертая строка - это URL-адрес задания с суффиксом "/build".
Если этот вызов успешный, curl возвращает 0
. Если это не удается, ошибка или исключение из службы печатаются на консоль. Этот ответ требует многого от старого сообщения в блоге, относящегося к Hudson, которое я деконструировал и переработал для своих собственных нужд.
Здесь вы можете использовать POST XML в Windows с помощью командной строки curl в Windows. Для этого лучше использовать пакетный файл .cmd:
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"
Если у вас несколько заголовков, вы можете использовать следующее:
curl -X POST --header "Content-Type:application/json" --header "X-Auth:AuthKey" --data @hello.json Your_url
Вы можете использовать эту команду:
curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: <<Removed>>' -F [email protected]"/home/xxx/Desktop/customers.json" 'API_SERVER_URL' -k
Если вы используете завиток в 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
У меня есть XML файл в каком-то каталоге Linux, и я пытаюсь отправить его в остальные API? Есть ли следующий способ сделать это? $ curl -X POST -d @filename http://хост/конечная точка
API ожидает XML. Вышесказанное отправит файл или его содержимое? Спасибо