#php #http
#php #http
Вопрос:
Когда сервер возвращает любую ошибку (401, 405 и т.д.), fopen возвращает недопустимый. Есть ли способ получить тело ответа?
Ответ №1:
Используйте контекст (через stream_context_create) и параметр контекста ignore_errors, который «Извлекает содержимое даже при кодах состояния сбоя.«:
$options = array(
'http' => array(
'ignore_errors' => true,
),
);
$context = stream_context_create($options);
$handle = fopen('http://url/', 'r', false, $context);
Ответ №2:
А еще лучше, используйте вместо этого расширение cURL. Более высокая производительность, более детализированный контроль над его поведением, а также более мощный — вы сможете получить точный код состояния HTTP в этом приведении.
Вот хороший пример:http://php.net/curl.examples-basic
Вот полная документация:http://php.net/book.curl