Curl post example php: PHP, cURL, and HTTP POST example?
Содержание
Выполнение запроса POST с использованием Curl [Практические примеры]
Содержание
Реклама
Что такое Curl?
cURL, что означает C lient URL, — это утилита командной строки с открытым исходным кодом, в основном используемая разработчиками для передачи данных на или с сервера по различным поддерживаемым протоколам. Поддерживаемые протоколы включают HTTP POST, HTTP PUT, загрузку файлов FTP, отправку веб-форм, аутентификацию пользователя, файлы cookie HTTP, HTTP, HTTPS, FTP, FTPS, SFTP, встроенные сертификаты SSL и многое другое. Эта утилита устанавливается по умолчанию в большинстве дистрибутивов Linux и macOS, а также доступна для Windows.
Эта утилита в основном используется разработчиками, которые тестируют API, просматривают ответы сервера и делают HTTP-запросы. В этой статье мы дадим вам подробное руководство о том, как выполнить запрос POST с использованием cURL.
Что такое метод запроса HTTP POST?
H yper T ext T ransfer P rotocol (HTTP) — это протокол запроса-ответа, обеспечивающий связь между клиентскими машинами и серверами. Например, когда вы что-то ищете в браузере, ваш компьютер отправляет запрос POST на сервер, который отправляет ответ. Ответ содержит информацию о статусе отправленного запроса и запрошенного контента.
ТАКЖЕ ЧИТАЙТЕ: удаление элементов одного массива из другого массива в bash [РЕШЕНО]
Существует несколько методов HTTP. К ним относятся POST, GET, PUT, HEAD, DELETE, PATCH и OPTIONS. Однако наиболее распространенными являются POST и GET. Данные, отправленные из браузера на сервер с использованием метода HTTP POST, сохраняются в теле запроса, как показано ниже.
POST /test/demo_form.php HTTP/1.1 Тип содержимого: приложение/json Длина содержимого: 1024 Хост: golinuxcloud.com
Отправка POST-запроса с помощью Curl
Вы можете увидеть все параметры, необходимые для отправки POST-запросов, из приведенного выше кода. Сначала нам нужно указать метод HTTP, используя параметр -X
. В данном случае это метод POST. Далее нам нужно указать Content-type с помощью параметра -H
. Это позволяет серверу идентифицировать тип данных тела запроса и обрабатывать его соответствующим образом. Есть два варианта Content-Type. приложение/x-www-form-urlencoded
, который используется при отправке веб-формы на сервер, и multipart/form-data
, который используется для загрузки файлов на сервер.
Параметр -F
используется для отправки данных с использованием multipart/form-data
Content-Type и -d
для отправки данных с использованием application/x-www-form-urlencoded
Content-Type. Последний параметр — хост/сервер. Здесь вы можете ввести URL вашего целевого веб-сайта. См. синтаксис CURL по умолчанию для отправки запроса POST ниже.
curl -X POST [параметры] [URL]
ТАКЖЕ ЧИТАЙТЕ: Как БЫСТРО установить шрифты в Linux [GUI и CLI]
Сделать простой запрос POST с помощью CURL Curl, выполните приведенную ниже команду на своем терминале.
curl -X POST https://example.com
Реклама
Отправить дополнительные поля в почтовом запросе Curl
Мы можем использовать параметр -d
для отправки дополнительных данных в POST-запросе. Помните, что использование этого параметра также определяет заголовок Content-Type/ по умолчанию как 9.0045 приложение/x-www-form-urlencoded . Чтобы лучше понять, как мы можем отправлять дополнительные поля, давайте посмотрим на простой HTML-код ниже.
Этот код отображает в браузере простой экран входа в систему с тремя основными полями. Поле имени пользователя, в котором используется имя ввода «пользователь», поле пароля, в котором используется имя ввода «пароль», и кнопка входа. Вы также можете увидеть метод HTTP, используемый для отправки этих данных на сервер, — POST.
После ввода имени пользователя, пароля и нажатия кнопки «Вход» эти данные отправляются в код Node-JS ниже.
в этом образе зафиксирован какой-то код
Мы сосредоточим внимание на двух строках кода выше.
var имя пользователя = req.body.user; var пароль = req.body.pass;
Первая строка var username = req.body.user;
считывает ввод пользователя в поле имени пользователя и сохраняет его в поле имени пользователя переменная. Помните, что это поле использует имя ввода «пользователь», , как показано в коде HTML . Вторая строка var password = req.body.pass;
считывает ввод пользователя в поле пароля и сохраняет его в переменной пароля. Помните, что это поле использует имя ввода «pass», , как показано в коде HTML. После обработки вводимых пользователем данных код NodeJS либо отобразит в браузере сообщение «ВХОД УСПЕШНО», либо «НЕДЕЙСТВИТЕЛЬНЫЕ УЧЕТНЫЕ ДАННЫЕ».
ТАКЖЕ ЧИТАЙТЕ: Как изменить ограничение процесса smbd в Linux? [РЕШЕНО]
Поскольку мы знаем имена ввода, используемые для разных полей, вместо того, чтобы запускать браузер и напрямую вводить имя пользователя и пароль, мы можем использовать CURL для отправки этой информации и отображения ответа сервера на терминале. Разве это не захватывающе? Это даже больше похоже на автоматизацию браузера. Давайте посмотрим на синтаксис команды, который мы будем использовать для достижения этой цели.
curl -d "[Input-Name]=[Your-UserName] & [Input-Pass]=[Your-UserPassword]" -X POST [Target-Host]
Давайте воспользуемся приведенным выше синтаксисом для написания нашей команды:
curl -d "user=johndoe & pass=12345" -X POST http://localhost:3000/
NB : я включил некоторые echo параметры в команде, чтобы получить чистый вывод терминала.
Используя изображение выше, я ввел правильные учетные данные в первой команде, и мы получили сообщение «ВХОД УСПЕШЕН». Я использовал неправильное имя пользователя во второй команде, и мы получили сообщение «INVALID CREDENTIALS».
Укажите Content-Type в запросе POST с помощью Curl
Если вы хотите использовать определенный заголовок или Content-Type, вы можете использовать параметр -H
. Например, мы можем изменить приведенную выше команду, включив заголовок application/x-www-form-urlencoded
, как показано ниже.
эхо; curl -d "user=johndoe&pass=12345" -H "Тип содержимого: application/x-www-form-urlencoded" -X POST http://192.168.1.52:3001/; эхо; эхо
А вот и интересный бит . Давайте попробуем указать Content-Type что-то еще, например application/json
.
эхо; curl -d "user=johndoe&pass=12345" -H "Content-Type: application/json" -X POST http://192.168.1.52:3001/; эхо; echo
Advertisement
Используя изображение выше, несмотря на то, что я ввел правильные учетные данные, мы получаем сообщение «INVALID CREDENTIALS». Это подводит нас к разнице между application/x-www-form-urlencoded
и приложение/json
.
ТАКЖЕ ЧИТАЙТЕ: 5 команд для копирования файла с одного сервера на другой в Linux или Unix
Загрузка файлов с помощью Curl с использованием метода POST
Чтобы отправить файл с помощью Curl с помощью метода POST, мы будем использовать -F параметр и добавьте символ @ в начале пути к файлу.