Отправляем GET запросы в PHP

Это учебное пособие для начинающих о том, как отправить простой HTTP GET-запрос с помощью PHP. Для отправки GET-запросов с помощью PHP существует два разных способа.

file_get_contents

Первый метод предполагает использование функции file_get_contents. Эта простая в использовании функция присутствует в PHP с версии 4.3.0 и предназначена для “чтения всего файла в строку”.

В этом случае, указанный файл является URL, к которому мы получим доступ через GET. Взгляните на следующий пример кода:

// URL для GET запроса
$url = 'http://google.com';

// использовать file_get_contents для GET запроса к URL
$contents = file_get_contents($url);

// если $contents не FALSE
if($contents !== false){
    // вывести содержимое
    echo $contents;
}

При указании URL-адреса, file_get_contents получит содержимое URL-адреса с помощью HTTP GET-запроса.

Если вам нужно добавить параметры запроса / GET, то вы можете просто добавить их в конец URL подобным образом:

// URL с дополнительными параметрами запроса
$url = 'http://google.com?id=1&name=wayne';

// также используем file_get_contents для GET запроса к URL
$contents = file_get_contents($url);

// если $contents не булевое FALSE
if($contents !== false){
    // выводим contents
    echo $contents;
}

В коде выше я добавил строковые id и name параметры запроса.

К сожалению, недостаток использования file_get_contents заключается в том, что вы не можете получить HTTP-коды ответа, а обработка ошибок является крайне простой.

cURL

Для получения кодов ответа HTTP и другой информации о заголовках можно использовать библиотеку cURL. По умолчанию cURL использует GET-запросы:

// инициализируем cURL
$ch = curl_init();

// установите URL, который вы хотите получить с помощью опции CURLOPT_URL
curl_setopt($ch, CURLOPT_URL, 'http://google.com');

// установите CURLOPT_RETURNTRANSFER так, чтобы содержимое возвращалось в качестве переменной
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// установите значение CURLOPT_FOLLOWLOCATION в true, чтобы следовать перенаправлению.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// выполняем запрос
$data = curl_exec($ch);

// закрываем обработчик cURL
curl_close($ch);

// вывести данные на страницу
echo $data;

В приведенном выше коде, мы:

  1. Инициализировали cURL с помощью функции curl_init.
  2. Мы устанавливаем URL, который хотим получить (GET) с помощью параметра CURLOPT_URL.
  3. Мы установили опцию CURLOPT_RETURNTRANSFER в true, чтобы содержимое URL не выводилось на страницу автоматически (вместо этого оно возвращается в виде строки функцией curl_exec).
  4. Мы устанавливаем опцию CURLOPT_FOLLOWLOCATION в true, потому что мы хотим следовать любым редиректам, которыми сайт говорит нам следовать. Если вы хотите игнорировать перенаправление заголовков, то просто удалите соответствующую строку или установите опцию в false.
  5. Мы выполнили GET-запрос с помощью curl_exec.
  6. Мы закрыли обработчик CURL-ручки.
  7. Наконец, мы вывели на печать содержимое URL-адреса на страницу.

cURL является лучшим вариантом для использования, если вы хотите больше контроля над вашими HTTP-запросами. Он не только имеет лучшую обработку ошибок, но и позволяет использовать куки, устанавливать информацию о реферерах, настраивать пользовательские user agents и т.д.

Наверх ↑

Сергей Ермилов

Создаю веб-проекты, придумываю идеи, занимаюсь разработкой, оптимизирую и продвигаю сайты. Первые шаги в этом направлении были сделаны в 2008 году. Если у вас есть какие-то идеи или вы хотите что-то предложить, то пишите мне и моей команде.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вы можете использовать HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>