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 параметр и добавьте символ @ в начале пути к файлу.