Відповіді:
З полями:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
З окремими полями:
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi
Багатопартійна:
curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi
Багаточастинка з полями та ім'ям файлу:
curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi
Без даних:
curl --data '' https://example.com/resource.cgi
curl -X POST https://example.com/resource.cgi
curl --request POST https://example.com/resource.cgi
Для отримання додаткової інформації дивіться посібник CURL . Підручник CURL щодо емуляції веб-браузера є корисним.
За допомогою libcurl використовуйте curl_formadd()
функцію, щоб створити форму, перш ніж надсилати її звичайним чином. Додаткову інформацію див. У документації на лібкурл .
Для великих файлів розгляньте можливість додавання параметрів для показу прогресу завантаження:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
-o output
Потрібно, в іншому разі не буде відображатися індикатор.
--data-urlencode
(без тире), принаймні в останніх версіях
With Fields
, коли Multipart
і коли Without Data
?
--data
вас можна використовувати -d
.
Для RESTful HTTP POST, що містить XML:
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"
або для JSON, використовуйте це:
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"
Це прочитає вміст названого файлу filename.txt
та надішле його як запит на публікацію.
curl -X POST
передбачає HTTP POST-запит, -d
параметр (довга версія :) --data
повідомляє curl, що далі буде параметром POST, і @filename
визначає вміст файлу filename
як параметр. Цей підхід найкраще працює з RESTful HTTP API, як це можна знайти на Twitter, Facebook, різних інших веб-сервісах, включаючи Ruby on Rails, а також HTTP API баз даних, таких як CouchDB. REST розшифровується як державна передача Представництва
-X POST
що мається на увазі -d
.
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
- приклад, знайдений у Посібнику з прикладу керма .
Використовуйте% 26 для амперсандів, хоча якщо вищезазначене не працює:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Якщо ви хочете увійти на сайт, зробіть наступне:
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
Перший запит зберігає файли cookie сеансу (який надається після успішного входу) у файл "заголовки". Відтепер ви можете використовувати цей файл cookie для аутентифікації будь-якої частини веб-сайту, до якого ви зазвичай отримуєте доступ після входу в браузері.
curl -v --data-ascii var=value http://example.com
і є ще багато варіантів, перевірте curl --help
для отримання додаткової інформації.
Якщо вам лінь, ви можете змусити google-chrome виконати всю роботу за вас.
Chrome скопіює всі дані запиту в синтаксис cURL
Chrome використовує, --data 'param1=hello¶m2=world'
які можна зробити більш читабельними, використовуючи один -d
чи -F
параметр, залежно від типу запиту POST, який ви бажаєте надіслати, який може бути application/x-www-form-urlencoded
або multipart/form-data
відповідно.
Це буде POST-ed як application/x-www-form-urlencoded
( використовується для більшості форм, які не містять файлів для завантаження ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
Для використання multipart/form-data
POST -F
( зазвичай використовується у формах, що містять завантаження файлів, або там, де важливий порядок полів, або де потрібно кілька полів з однаковою назвою ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
User-Agent
Тема звичайно не потрібно, але я кинув його в усякому разі. Ви можете уникнути необхідності встановлення агента користувача на кожен запит, створивши ~/.curlrc
файл, який містить напрUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data