При работе с PHP и cURL важно знать, как получить код ответа HTTP из запроса. Код ответа HTTP предоставляет ценную информацию о состоянии запроса, например, был ли он успешным или возникла ошибка. В этой статье мы рассмотрим несколько методов извлечения кода ответа HTTP с использованием cURL в PHP, а также примеры кода для каждого подхода.
Метод 1: использование функции curl_getinfo
Функция curl_getinfo
позволяет нам получать различную информацию о передаче cURL, включая код ответа HTTP. Вот пример:
$url = 'https://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Response Code: " . $httpCode;
Метод 2: используя параметр CURLOPT_HEADERFUNCTION
С помощью параметра CURLOPT_HEADERFUNCTION
мы можем определить функцию обратного вызова, которая получает заголовки ответа. Используя этот метод, мы можем извлечь код ответа HTTP из заголовков. Вот пример:
$url = 'https://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = [];
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
function($curl, $header) use (&$headers) {
$headers[] = $header;
return strlen($header);
}
);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Response Code: " . $httpCode;
Метод 3: использование параметра CURLOPT_WRITEHEADER
Опция CURLOPT_WRITEHEADER
позволяет нам указать файл, в который будут записываться заголовки ответов. Затем мы можем проанализировать файл и извлечь код ответа HTTP. Вот пример:
$url = 'https://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headersFile = fopen('headers.txt', 'w');
curl_setopt($ch, CURLOPT_WRITEHEADER, $headersFile);
$response = curl_exec($ch);
fclose($headersFile);
$headers = file('headers.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$httpCode = null;
foreach ($headers as $header) {
if (preg_match('/HTTP\/\d.\d (\d+)/', $header, $matches)) {
$httpCode = $matches[1];
break;
}
}
echo "HTTP Response Code: " . $httpCode;
Получение кода ответа HTTP имеет решающее значение для понимания результата запроса, выполненного с использованием cURL в PHP. В этой статье мы рассмотрели три метода извлечения кода ответа HTTP: использование функции curl_getinfo
, параметра CURLOPT_HEADERFUNCTION
и параметра CURLOPT_WRITEHEADER
. Каждый метод предоставляет способ получения кода ответа, что позволяет разработчикам эффективно обрабатывать запросы и предпринимать соответствующие действия на основе полученного кода.
Освоив эти методы, разработчики PHP смогут создавать надежные приложения, способные обрабатывать различные сценарии и обеспечивать лучший пользовательский опыт.
Не забудьте выбрать метод, который лучше всего соответствует вашим конкретным требованиям и стилю кодирования.