Ответ
В PHP для выполнения HTTP-запросов используется расширение cURL. Основной процесс включает инициализацию сессии, настройку опций, выполнение и закрытие.
Базовый шаблон для GET-запроса:
// 1. Инициализация сессии cURL
$ch = curl_init();
// 2. Настройка параметров запроса
curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Возвращать ответ в виде строки, а не выводить
curl_setopt($ch, CURLOPT_HEADER, false); // Не включать заголовки в вывод
// 3. Выполнение запроса и получение ответа
$response = curl_exec($ch);
// 4. Проверка на ошибки
if ($response === false) {
$error = curl_error($ch);
// Обработка ошибки (логирование, исключение и т.д.)
throw new Exception("cURL Error: {$error}");
}
// 5. Получение HTTP-кода статуса
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// 6. Закрытие сессии cURL
curl_close($ch);
// 7. Работа с ответом (например, JSON)
$data = json_decode($response, true);
Пример POST-запроса с JSON-телом:
$payload = json_encode(['name' => 'John', 'age' => 30]);
$ch = curl_init('https://api.example.com/users');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload, // Тело запроса
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Content-Length: ' . strlen($payload)
],
]);
$response = curl_exec($ch);
curl_close($ch);
Ключевые опции:
CURLOPT_TIMEOUT: Таймаут выполнения.CURLOPT_SSL_VERIFYPEER: Проверка SSL-сертификата (отключить для тестов).CURLOPT_FOLLOWLOCATION: Следовать редиректам.CURLOPT_CUSTOMREQUEST: Для методов типаPUT,DELETE.
Использование curl_setopt_array улучшает читаемость при множестве опций.