Ответы:
С полями:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
С полями, указанными индивидуально:
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi
Multipart:
curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi
Multipart с полями и именем файла:
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()
функцию для создания формы, прежде чем отправлять ее обычным способом. См. Документацию libcurl для получения дополнительной информации.
Для больших файлов рассмотрите возможность добавления параметров, чтобы показать ход загрузки:
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
параметр (long version :) --data
сообщает curl, что ниже будут параметры POST, и @filename
определяет содержимое файла в filename
качестве параметра. Этот подход лучше всего работает с HTTP-API RESTful, которые можно найти в Twitter, Facebook, различных других веб-сервисах, включая Ruby on Rails, а также HTTP-API баз данных, таких как CouchDB. REST расшифровывается как « Представительный государственный перевод»
-X POST
поскольку это подразумевается -d
.
Данные из stdin с -d @-
Пример:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Выход:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
это пример, найденный в руководстве к примеру Curl .
Используйте% 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