Как отправить post запрос с json данными в php?

Пользователь

от fred , в категории: PHP , 3 года назад

Как отправить post запрос с json данными в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 3 года назад

@fred Вы можете использлвать CURL или готовые библиотеки (например Guzzle) чтобы отправить POST запрос с JSON данными к серверу на PHP, ниже пример кода отправки через CURL:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php

$requestData = [
    'username' => 'test',
    'password' => 'test'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json'
]);
// Устанавливаем наши JSON данные
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));

// Отправить POST запрос с json данными
$response = curl_exec($ch);

// Проверяем ответ
if ($response === FALSE) {
    // В реальном проекте вероятно нужно некоторые логи здесь вместо die
    die("Ошибка при отправке запроса");
}

// Раскодируем ответ с сервера если нужно в массив
$responseData = json_decode($response, TRUE);

// Закрываем cURL
curl_close($ch);

echo $responseData['name'];


Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от marc_zboncak , 2 года назад

@fred 

Для отправки POST запроса с JSON данными в PHP можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$data = array('foo' => 'bar', 'baz' => 'qux');
$ch = curl_init('http://example.com/api');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen(json_encode($data)))
);
$result = curl_exec($ch);
curl_close($ch);


В данном примере мы используем библиотеку cURL для отправки POST запроса. Массив данных $data преобразуется в JSON строку с помощью функции json_encode, которая устанавливается как данные для отправки через CURLOPT_POSTFIELDS.


Также мы устанавливаем заголовки Content-Type и Content-Length, которые указывают на тип и размер передаваемых данных.


Результат запроса сохраняется в переменной $result.