Вопрос: Каков синтаксис командной строки cURL для выполнения запроса POST?


Как я могу сделать ПОСЛЕ запросить завивать инструмент командной строки?


2051
2017-09-17 15:39


Источник




Ответы:


С полями:

curl --data "param1=value1&param2=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 требуется, в противном случае индикатор прогресса не появится.


2382
2017-09-17 15:43



@LauriRanta --data-urlencode (без тире), в последних версиях по крайней мере - waitinforatrain
Также работает, если вам нужно обновить ресурс с помощью PUT: curl -X PUT ... - Subfuzion
У меня проблемы с пониманием ... когда я это сделаю With Fields, когда с Multipart и когда Without Data? - CodyBugstein
Вместо --data вы можете использовать -d, - user35538
У меня есть массив полей. Как я могу это сделать? - ARUNBALAN NV


Для 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 и отправить его в качестве почтового запроса.


480
2018-03-10 08:29



@ tom-wijsman объяснение: curl -X POST подразумевает запрос HTTP POST, -d параметр (длинная версия: --data) сообщает curl, что следующим образом будут POST-параметры, и @filename обозначает содержимое файла filename как параметр. Этот подход лучше всего работает с API-интерфейсами RESTful HTTP, найденными в Twitter, Facebook, различными другими веб-сервисами, включая Ruby on Rails, а также HTTP-API таких баз данных, как CouchDB. REST означает Изобразительное State Transfer - soundmonster
Как мы можем видеть ответ xml не в одной строке, а отформатирован? - Vitaly Zdanevich
Я думаю, что вы можете -X POST поскольку это подразумевается -d, - benjifisher
Как предоставить несколько заголовков? - keya
Несколько заголовков: curl -H "header2: 1" -H "header2: 2" ... - Tomáš Kratochvíla


Данные от stdin: использование -d @-, Пример:

echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown

Вывод:

<p>Hello <strong>world</strong>!</p>

118
2018-03-25 19:35



Отлично, если у вас есть объект JSON уже в буфере обмена - Luca Steeb
еще лучше: echo "$ message" | curl -H "Content-Type: application / json" -d @ - "$ url" - rzr


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 

64
2017-09-17 15:42





Если вы хотите войти на сайт, выполните следующие действия:

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

Первый запрос сохраняет файл cookie сеанса (который предоставляется при успешном входе в систему) в файле «заголовки». С этого момента вы можете использовать этот файл cookie для аутентификации на любой части веб-сайта, доступ к которой вы обычно получаете после входа в браузер.


57
2018-03-04 02:21



заметка из справочной страницы curl: «Опция -c, --cookie-jar - лучший способ хранения файлов cookie». - maxschlepzig


curl -v --data-ascii var=value http://example.com

и есть еще много вариантов, проверьте curl --help Чтобы получить больше информации.


31
2017-09-17 15:43





Если вы ленитесь, вы можете получить google-хром, чтобы выполнить всю работу за вас.

  1. Щелкните правой кнопкой форму, которую вы хотите отправить, и выберите Осмотреть, Это откроет панель DevTools.
  2. Выберите сеть вкладки в devtools и отметьте Журнал сохранения флажок.
  3. Отправьте форму и найдите запись с помощью метода POST (щелкните правой кнопкой мыши на любом заголовке столбца и убедитесь, что метод проверено).
  4. Щелкните правой кнопкой мыши строку с помощью POST и выберите копия > Копировать как cURL,

chrome devtools: copy as cURL

Chrome будет копировать все данные запроса в синтаксисе cURL.

Использование Chrome --data 'param1=hello&param2=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"


14
2017-09-29 08:06