Как сделать POST-запрос с помощью cURL

03.12.20202020-12-03T02:31:46+03:002021-01-14T12:59:05+03:00 Linux, Команды Комментариев нет

cURL — это утилита командной строки для передачи данных с или на удаленный сервер с использованием одного из поддерживаемых протоколов. Он установлен по умолчанию в macOS и большинстве дистрибутивов Linux.

cURL используется разработчиками для тестирования API , просмотра заголовков ответов и выполнения HTTP-запросов.

В этой статье мы собираемся объяснить, как использовать cURL для выполнения запросов POST. Метод HTTP POST используется для отправки данных на удаленный сервер.

Содержание

Выполнение запроса POST

Общая форма команды curl для выполнения запроса POST следующая:

curl -X POST [options] [URL]

Параметр -X указывает, какой метод HTTP-запроса будет использоваться при связи с удаленным сервером.

Тип тела запроса указывается его заголовком Content-Type .

Обычно запрос POST отправляется через HTML-форму. Данные, отправляемые в форму, обычно кодируются в типе содержимого multipart/form-data или application/x-www-form-urlencoded .

Чтобы создать запрос POST, используйте параметр -F , за которым следует пара field=value . В следующем примере показано, как отправить POST-запрос в форму с полями «имя» и «электронная почта»:

curl -X POST -F 'name=linuxize' -F '[email protected]' https://example.com/contact.php

Когда используется опция -F , curl отправляет данные с использованием Content-Type

multipart/form-data .

Другой способ сделать запрос POST — использовать параметр -d . Это заставляет curl отправлять данные с использованием Content-Type application/x-www-form-urlencoded Content-Type.

curl -X POST -d 'name=linuxize' -d '[email protected]' https://example. com/contact.php

Если параметр -d используется более одного раза, вы можете объединить данные с помощью символа & :

curl -X POST -d 'name=linuxize&[email protected]' https://example.com/contact.php

Указание Content-Type

Чтобы установить определенный заголовок или Content-Type, используйте параметр -H . Следующая команда устанавливает тип запроса POST на application/json и отправляет объект JSON:

curl -X POST -H "Content-Type: application/json"     -d '{"name": "linuxize", "email": "[email protected]"}'     https://example/contact

Загрузка файлов

Чтобы отправить файл с помощью curl , просто добавьте символ @ перед местоположением файла. Файл может быть архивом, изображением, документом и т. Д.

curl -X POST -F '[email protected]/home/user/Pictures/wallpaper.jpg' http://example.com/upload

Выводы

Мы показали вам, как использовать curl для выполнения запросов POST. Дополнительные сведения о curl см. На странице документации по Curl .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Как сделать запрос POST с помощью cURL в Linux

Введение

Как объединить кор…

Please enable JavaScript

Как объединить короткое красное платье

cURL — это утилита командной строки для передачи данных на удаленный сервер или с него с использованием одного из поддерживаемых протоколов. Он установлен по умолчанию в macOS и большинстве дистрибутивов Linux.

cURL используется разработчиками для тестирования API, просмотра заголовков ответов и выполнения HTTP-запросов.

В этой статье мы объясним, как использовать cURL для выполнения запросов POST. Метод HTTP POST используется для отправки данных на удаленный сервер.

Сделать POST-запрос

Общая форма командыcurl для выполнения POST-запроса выглядит следующим образом:

curl -X POST [options] [URL]

Параметр -X указывает, какой метод HTTP-запроса будет использоваться при обмене данными с удаленным сервером.

Тип тела запроса указывается заголовком Content-Type.

Как правило, запрос POST отправляется через HTML-форму. Данные, отправляемые в форму, обычно кодируются в multipart/form-data или application/x-www-form-urlencoded.

Чтобы создать запрос POST, используйте параметр

-F, за которым следует пара field=value. В следующем примере показано, как сделать запрос POST к форме с полями «имя» и «адрес электронной почты»:

curl -X POST -F 'name=noviello' -F '[email protected]' https://example.com/contact.php

Когда используется опция -F, curl отправляет данные, используя Content-Type multipart/form-data.

Другой способ сделать POST-запрос — использовать параметр -d. Это приводит к тому, что данные отправляются с помощью curl с помощью application/x-www-form-urlencoded.

curl -X POST -d 'name=noviello' -d '[email protected]' https://example.
com/contact.php

Если параметр -d используется более одного раза, вы можете объединить данные с помощью символа &:

curl -X POST -d 'name=noviello&[email protected]' https://example.com/contact.php

Укажите тип контента

Чтобы установить определенный заголовок или тип содержимого, используйте параметр -H. Следующая команда устанавливает тип запроса POST в application/json и отправляет объект JSON:

curl -X POST -H "Content-Type: application/json" \

Загрузить файл

Чтобы отправить файл с помощью curl, просто добавьте символ @ перед путем к файлу. Файл может быть архивом, изображением, документом и т.д.

curl -X POST -F '[email protected]/home/user/Pictures/wallpaper.jpg' http://example.com/upload

Вывод

Мы показали вам, как использовать curl для отправки POST-запросов. Для получения дополнительной информации о curl посетите страницу документации Curl.

Buy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Примеры

curl POST · GitHub

Общие параметры

-#, --прогресс-бар Сделайте отображение curl простым индикатором выполнения вместо более информативного стандартного индикатора.

-b, --cookie <имя=данные> Предоставить cookie с запросом. Если нет = , то указывает файл cookie для использования (см. -c ).

-c, --cookie-jar <имя файла>

Файл для сохранения файлов cookie ответов.

-d, --data <данные> Отправить указанные данные в запросе POST. Подробная информация представлена ​​ниже.

-f, --сбой Ошибка молча (не выводить HTML-форму ошибки, если возвращается).

-F, --form <имя=содержание> Отправить данные формы.

-H, --header <заголовок> Заголовки для предоставления с запросом.

-i, --include Включите заголовки HTTP в вывод.

-I, --head Получить только заголовки.

-k, --небезопасно Разрешить небезопасные соединения для успеха.

-L, --местоположение Следите за редиректами.

-o, --output <файл> Запишите вывод в . Можно использовать --create-dirs в сочетании с этим для создания любых каталогов. указанный в пути -o .

-O, --remote-name Запись вывода в файл с именем, подобным удаленному файлу (запись только в текущий каталог).

-s, --silent Бесшумный (тихий) режим. Используйте с -S , чтобы заставить его показывать ошибки.

-v, --verbose Предоставьте дополнительную информацию (полезно для отладки).

-w, --write-out <формат> Заставить curl отображать информацию на stdout после завершения передачи. См. справочную страницу для получения более подробной информации о доступные переменные. Удобный способ заставить curl добавить новую строку к выводу: -w "\n" (можно добавить до ~/.curlrc ).

-Х, --запрос Используемый метод запроса.

ПОЧТ

При отправке данных через запрос POST или PUT используются два распространенных формата (указанных в заголовке

Content-Type ):

  • приложение/json
  • приложение/x-www-form-urlencoded

Многие API принимают оба формата, поэтому, если вы используете curl в командной строке, может быть немного проще использовать формат urlencoded формы вместо json, потому что

  • формат json требует дополнительных кавычек
  • curl по умолчанию отправит форму с URL-адресом, поэтому для json заголовок Content-Type должен быть явно установлен

В этом разделе приведены примеры использования обоих форматов, в том числе способы использования файлов образцов данных в любом формате с запросами

curl .

использование скручивания

Для отправки данных с запросами POST и PUT это общие параметры curl :

Примеры

POST-приложение/x-www-form-urlencoded

application/x-www-form-urlencoded по умолчанию:

 curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
 

явный:

 curl -d "param1=value1¶m2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data
 

с файлом данных

 curl -d "@data.txt" -X POST http://localhost:3000/data
 

POST-приложение/json

 curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data
 

с файлом данных

 curl -d "@data.json" -X POST http://localhost:3000/data
 

Как отправить POST с телом, заголовками и параметрами HTTP с помощью cURL?

Задавать вопрос

спросил

Изменено 4 года, 4 месяца назад

Просмотрено 212 тысяч раз

Я нашел много примеров того, как использовать простые команды POST в cURL, но я не нашел примеров того, как отправлять полные команды POST HTTP, которые содержат:

  • Заголовки (базовая аутентификация)
  • Параметры HTTP ( s=1&r=33 )
  • Данные тела, некоторая строка XML

Все, что я нашел, это:

 эхо "это тело" | curl -d "ss=ss&qq=11" http://localhost/
 

Это не работает, и в качестве тела отправляются параметры HTTP.

3

Недостаточно репутации, чтобы комментировать, поэтому оставьте это как ответ, надеясь, что это поможет.

 curl -L -v --post301 --post302 -i -X ​​PUT -T "${aclfile}" \
  -H "Дата: ${dateValue}" \
  -H "Тип контента: ${contentType}" \
  -H "Авторизация: AWS ${s3Key}:${подпись}" \
  ${хост}:${порт}${ресурс}
 

Это то, что я использовал для операции acl put для корзины S3. Заголовки находятся в -H, а тело, которое представляет собой файл xml, находится в ${aclfile} после -T. Вы можете видеть это из вывода:

 /ааа/?acl
* О подключении() к порту 80 192.168.57.101 (#0)
* Попытка 192.168.57.101...
* Подключен к 192.168.57.101 (192.168.57.101) порту 80 (#0)
> ПОСТАВЬТЕ /aaa/?acl HTTP/1.1
> Пользовательский агент: curl/7.29.0
> Хост: 192.168.57.101
> Принять: */*
> Дата: Чт, 18 августа 2016 г., 08:01:44 по Гринвичу
> Content-Type: application/x-www-form-urlencoded; кодировка = utf-8
> Авторизация: AWS WFBZ1S6SO0DZHW2LRM6U:r84lr/lPO0JCpfk5M3GRJfHdUgQ=
> Длина контента: 323
> Ожидать: 100-продолжить
>
< HTTP/1. 1 100 ПРОДОЛЖИТЬ
HTTP/1.1 100 ПРОДОЛЖИТЬ
* Мы полностью загружены и отлично
< HTTP/1.1 200 ОК
HTTP/1.1 200 ОК
< x-amz-идентификатор запроса: tx00000000000000000001f-0057b56b69-31d42-по умолчанию
x-amz-request-id: tx000000000000000000001f-0057b56b69-31d42-по умолчанию
< Тип содержимого: приложение/xml
Тип содержимого: приложение/xml
< Длина содержимого: 0
Длина содержимого: 0
< Дата: Чт, 18 августа 2016 г., 08:01:45 по Гринвичу
Дата: Чт, 18 августа 2016 г., 08:01:45 по Гринвичу
<
* Соединение №0 с хостом 192.168.57.101 осталось нетронутым
 

если параметры URL-адреса содержат специальные знаки, такие как "+", используйте --data-urlencode для каждого параметра (содержащего специальные знаки):

 curl -G -H "Accept:..." -H "... " --data-urlencode "beginTime=${time}+${zone}" --data-urlencode "endTime=${time}+${zone}" "${url}"
 

«Параметры» HTTP являются частью URL-адреса:

 «http://localhost/?name=value&othername=othervalue»
 

Базовая аутентификация имеет отдельную опцию, нет необходимости создавать собственный заголовок:

 -u "пользователь:пароль"
 

«Тело» POST можно отправить либо через --data (для application/x-www-form-urlencoded ), либо через --form (для multipart/form-data ):

 -F "foo=bar" # Значение 'foo' равно 'bar'
-F "foo=