Як я можу надіслати / опублікувати XML-файл на локальний сервер http: // localhost: 8080 за допомогою curl з командного рядка?
Яку команду я повинен використовувати?
Як я можу надіслати / опублікувати XML-файл на локальний сервер http: // localhost: 8080 за допомогою curl з командного рядка?
Яку команду я повинен використовувати?
Відповіді:
Якщо це питання пов'язане з вашими іншими питаннями Хадсона, використовуйте команду, яку вони надають. Таким чином з XML з командного рядка:
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
Вам потрібно трохи змінити його, щоб прочитати з файлу:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Прочитайте довідкову сторінку . слідуючи абстрактному параметру -d.
-d / - дані
(HTTP) Надсилає вказані дані в запиті POST на сервер HTTP так само, як це робить браузер, коли користувач заповнив HTML-форму та натискає кнопку подання. Це призведе до того, що curl передає дані на сервер за допомогою програми типу content / x-www-form-urlencoded. Порівняйте з -F / - формою.
-d / - дані такі самі, як --data-ascii. Щоб розміщувати дані чисто двійкові, слід замість цього використовувати параметр --data-binary. Для кодування URL-адреси значення поля форми ви можете використовувати --data-urlencode.
Якщо будь-який із цих параметрів використовується більше одного разу в одному командному рядку, вказані фрагменти даних будуть об'єднані разом з роздільним & -символом. Таким чином, використання '-d name = daniel -d skill = lousy' генерує допис, який виглядає як 'name = daniel & skill = lousy'.
Якщо ви починаєте дані з літери @, решта має бути ім'ям файлу для читання даних з, або - якщо ви хочете, щоб curl читав дані з stdin. Вміст файлу повинен бути вже закодований URL-адресою. Можна також вказати кілька файлів. Опублікувати дані з файлу з назвою "foobar" таким чином буде виконуватися за допомогою --data @foobar.
--header "Content-Type:application/xml"
вас не передбачається кодування URL
-L
, не використовуйте, -X POST
оскільки це призведе до того, що перенаправлений запит також використовує POST. Якщо ви просто використовуєте -d, як пропонує @Tai, цього не станеться
-d
рядки смуг відривають від файлів. Щоб уникнути цього, використовуйте --data-binary
замість цього.
З сторінки керівництва , я вважаю , що ці дроїд ви шукаєте:
-F/--form <name=content>
(HTTP) Це дозволяє згортати емульовану заповнену форму, в якій користувач натиснув кнопку подання. Це призводить до згортання даних POST, використовуючи багаточастинні / форма-дані типу вмісту відповідно до RFC2388. Це дозволяє завантажувати двійкові файли тощо. Щоб змусити частину "вмісту" бути файлом, префікс назви файла зі знаком @.
Наприклад, щоб надіслати файл пароля на сервер, де 'пароль' - це ім'я поля форми, до якого / etc / passwd буде вводитись:
curl -F password=@/etc/passwd www.mypasswords.com
Тож у вашому випадку це було б щось подібне
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
file=@-
корисний, якщо ви хочете передати свій файл.
Можна скористатися опцією --дані з файлом.
Напишіть вміст xml у файл з назвою soap_get.xml та за допомогою команди curl надішліть запит:
curl -X POST --header "Тип вмісту: text / xml; charset = UTF-8" --дані @ soap_get.xml your_url
З Jenkins 1.494 мені вдалося надіслати файл до параметра завдання на Ubuntu Linux 12.10 за curl
допомогою --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
На сервері Jenkins я налаштував завдання, яке приймає один параметр: параметр завантаження файлу з ім'ям myfileparam
.
Перший рядок цього виклику curl створює веб-форму з назвою параметра myfileparam
(такий же, як у роботі); його значення буде вмістом файлу в локальній файловій системі з назвою /local/path/to/your/file.txt
. The@
Префікс символу говорить локон , щоб послати локальний файл замість даного файлу.
Другий рядок визначає запит JSON, який відповідає параметрам форми в першому рядку: параметр файлу з ім'ям myfileparam
.
Третій рядок активує кнопку побудови форми. Четвертий рядок - це URL-адреса завдання з суфіксом "/ build".
Якщо цей виклик вдалий, curl повертається 0
. Якщо це не вдалося, помилка або виняток із сервісу надрукується на консоль. Ця відповідь багато бере зі старої публікації в блозі, що стосується Хадсона , яку я деконструював і переробив для власних потреб.
Ось як можна розмістити XML у Windows за допомогою командного рядка curl у Windows. Краще використовувати для цього файл batch / .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^>john@smith.com^</Client_Email^> ^
^<Client_IP^>123.4.56.7^</Client_IP^> ^
^<Tax1Amount^>^</Tax1Amount^> ^
^<Tax2Amount^>^</Tax2Amount^> ^
^</Transaction^> ^
" "http://localhost:8080"
Ви можете використовувати цю команду:
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
Якщо ви використовуєте curl в 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
The contents of the file must already be URL-encoded.
XML-файли OP точно не є.